{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# COMPSCI 389: Introduction to Machine Learning\n", "# Nearest Neighbor Variants\n", "\n", "In this notebook we present a few improved nearest neighbor algorithms.\n", "\n", "**Note:** This notebook is described in the slides, `5.0 Nearest Neighbor Variants.pdf`. All of the important content within this notebook is in those slides, so you are not responsible for this notebook. However, you may reference this notebook to run the examples from the slides.\n", "\n", "Recall from last time:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from sklearn.neighbors import KDTree\n", "from sklearn.base import BaseEstimator\n", "import numpy as np\n", "\n", "class NearestNeighbor(BaseEstimator):\n", " def fit(self, X, y):\n", " # Convert X and y to NumPy arrays if they are DataFrames. This makes fit compatible with numpy arrays or DataFrames\n", " if isinstance(X, pd.DataFrame):\n", " X = X.values\n", " if isinstance(y, pd.Series):\n", " y = y.values\n", "\n", " # Store the training data and labels.\n", " self.X_data = X\n", " self.y_data = y\n", " \n", " # Create a KDTree for efficient nearest neighbor search\n", " self.tree = KDTree(X)\n", "\n", " return self\n", "\n", " def predict(self, X):\n", " # Convert X to a NumPy array if it's a DataFrame\n", " if isinstance(X, pd.DataFrame):\n", " X = X.values\n", "\n", " # We will iteratively load predictions, so it starts empty\n", " predictions = []\n", " \n", " # Loop over rows in the query\n", " for x in X:\n", " # Query the tree for the nearest neighbor\n", " dist, ind = self.tree.query([x], k=1)\n", " nearest_label = self.y_data[ind[0][0]]\n", " predictions.append(nearest_label)\n", "\n", " # Return the array of predictions we have created\n", " return np.array(predictions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Nearest Neighbors Properties\n", "\n", "## Pros\n", "- Very simple\n", "- Sometimes all you need!\n", "- Efficient. $O(\\log(n))$ average case, $O(n)$ worst case.\n", " - Note: If you aren't familiar with this big-O notation, which is covered in COMPSCI 311, don't worry. You will not be tested on it.\n", "\n", "## Cons\n", "- Not always accurate, even with large amounts of data.\n", "\n", "Consider the following case:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAIjCAYAAAAQgZNYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABo10lEQVR4nO3deVxU9f7H8fcAwwAiYooigmJp7rvdUnPJjVwqo7TM1DRts5tL2f1521xK81Yu1XVrs2uae+YtTXFBXO91LbU0zZ1wTUFFYJw5vz+4TI4sggLDkdfz8eDhnO98z5nPOd8zw8cv3/l+LYZhGAIAAABMyMvTAQAAAAA3imQWAAAApkUyCwAAANMimQUAAIBpkcwCAADAtEhmAQAAYFokswAAADAtklkAAACYFsksAAAATItkFvCwyMhIPfXUU54O46Y89dRTioyMzHXdwMDAgg3ofywWi0aMGFEor3Wtw4cPy2KxaMaMGQVy/NjYWFksFsXGxhbI8QtCQV+TosKT950kjRgxQhaLxWOvf7Nat26tOnXq5Osxb4XPWWSPZBYeNWPGDFksFtePn5+fwsLCFBUVpQ8//FAXLly44WNv3LhRI0aM0Pnz5/MvYP35iyLjJyAgQLVq1dLrr7+upKSkfH2t65k8eXKRTAySk5M1YsSIAkm0CuIX3c2YPXu2Jk6c6OkwYDIZib3FYtHChQszPZ/xOXPmzBkPRJd3FotFL774oqfDQDHl4+kAAEkaNWqUqlSpIrvdrhMnTig2NlaDBw/W+PHjtWTJEtWrVy/Px9y4caNGjhypp556SsHBwfke85QpUxQYGKiLFy9qxYoVeuedd7R69Wpt2LAhT70i+/btk5fXjf2/cvLkySpbtqzHexw++eQTOZ1O13ZycrJGjhwpKT35vJXNnj1bu3fv1uDBg93KK1eurMuXL8tqtXomMJjGqFGjFB0dnW+9qa+//rr+7//+L1+OBZgBySyKhI4dO6pJkyau7eHDh2v16tXq0qWLHnzwQf3yyy/y9/f3YISZPfrooypbtqwk6bnnntMjjzyiRYsWafPmzWratGmuj2Oz2QoqxEJDwpZZxl8agJw0aNBAO3fu1DfffKPo6Oh8OaaPj498fPj1juKDYQYostq0aaM33nhDR44c0VdffeUq/+mnn/TUU0/p9ttvl5+fn0JDQ9WvXz+dPXvWVWfEiBEaNmyYJKlKlSquP+cdPnxYkvTFF1+oTZs2KleunGw2m2rVqqUpU6bcdLySdOjQIUnSpUuX9PLLLysiIkI2m03Vq1fX+++/L8Mw3Pa7dixXxtCLDRs2aOjQoQoJCVGJEiX08MMP6/Tp02777dmzR2vXrnWdX0YvqN1u18iRI1WtWjX5+fmpTJkyuvfeexUTE5Nt/OfPn5e3t7c+/PBDV9mZM2fk5eWlMmXKuMX9/PPPKzQ01LV99ZjZw4cPKyQkRJI0cuRIV2zXjiGMj49X165dFRgYqJCQEL3yyityOBzXucpZS01N1ZAhQxQSEqKSJUvqwQcf1PHjx7OsGx8fr379+ql8+fKy2WyqXbu2Pv/8c7c6GeNR582bp3feeUfh4eHy8/NT27ZtdeDAAVe91q1b6/vvv9eRI0dc53n1dchqfOjevXvVvXt3hYSEyN/fX9WrV9drr73mev7IkSN64YUXVL16dfn7+6tMmTLq1q2b697Ni8uXL6tGjRqqUaOGLl++7Cr/448/VKFCBTVr1izba37y5En5+Pi4etivtm/fPlksFn388ceu473yyiuqW7euAgMDFRQUpI4dO+rHH3+8boytW7fOsvc+q3HYTqdTEydOVO3ateXn56fy5cvr2Wef1blz5677Orn53JD+/PP+gQMHXH/VKVWqlPr27avk5GS3unm577Lz+OOP684779SoUaMyfTZkZf78+WrcuLH8/f1VtmxZPfnkk4qPj8/yHK4WExOje++9V8HBwQoMDFT16tX197//XZJ08eJFlShRQoMGDcr0esePH5e3t7fGjh2bp/PKyrfffqvOnTsrLCxMNptNd9xxh0aPHp3tPbht2zY1a9ZM/v7+qlKliqZOnZqpTmpqqt566y1VrVpVNptNERERevXVV5WamppjLDfyGYmii/+6oUjr1auX/v73v2vFihUaMGCApPQP5YMHD6pv374KDQ3Vnj17NH36dO3Zs0ebN2+WxWJRdHS0fv31V3399deaMGGCqwc1I8maMmWKateurQcffFA+Pj7697//rRdeeEFOp1MDBw68oVh/++03SXIlfg8++KDWrFmjp59+Wg0aNNDy5cs1bNgwxcfHa8KECdc93l//+leVLl1ab731lg4fPqyJEyfqxRdf1Ny5cyVJEydO1F//+lcFBga6kqHy5ctLSv9lNnbsWPXv319/+ctflJSUpK1bt2r79u1q3759lq8XHBysOnXqKC4uTi+99JIkaf369bJYLPrjjz/0888/q3bt2pKkdevWqUWLFlkeJyQkRFOmTNHzzz+vhx9+2NXbdPVQEYfDoaioKN199916//33tXLlSn3wwQe644479Pzzz1/32lyrf//++uqrr/TEE0+oWbNmWr16tTp37pyp3smTJ3XPPfe4xveFhIRo2bJlevrpp5WUlJRpqMC7774rLy8vvfLKK0pMTNQ//vEP9ezZU//5z38kSa+99poSExN1/PhxV5vm9OW2n376SS1atJDVatUzzzyjyMhI/fbbb/r3v/+td955R5K0ZcsWbdy4UY8//rjCw8N1+PBhTZkyRa1bt9bPP/+sgICAXF8Xf39/ffnll2revLlee+01jR8/XpI0cOBAJSYmasaMGfL29s5y3/Lly6tVq1aaN2+e3nrrLbfn5s6dK29vb3Xr1k2SdPDgQS1evFjdunVTlSpVdPLkSU2bNk2tWrXSzz//rLCwsFzHnJNnn31WM2bMUN++ffXSSy/p0KFD+vjjj7Vjxw5t2LAhx78Q5OZz42rdu3dXlSpVNHbsWG3fvl2ffvqpypUrp3Hjxrnq5Pa+y4m3t7def/119e7d+7q9sxnnftddd2ns2LE6efKkJk2apA0bNmjHjh3ZDqfas2ePunTponr16mnUqFGy2Ww6cOCANmzYICn9nn344Yc1d+5cjR8/3u2e+Prrr2UYhnr27Jmn88ou/sDAQA0dOlSBgYFavXq13nzzTSUlJem9995zq3vu3Dl16tRJ3bt3V48ePTRv3jw9//zz8vX1Vb9+/SSl/+fmwQcf1Pr16/XMM8+oZs2a2rVrlyZMmKBff/1VixcvzjaWG/mMRBFmAB70xRdfGJKMLVu2ZFunVKlSRsOGDV3bycnJmep8/fXXhiQjLi7OVfbee+8ZkoxDhw5lqp/VMaKioozbb7/9ujG/9dZbhiRj3759xunTp41Dhw4Z06ZNM2w2m1G+fHnj0qVLxuLFiw1Jxttvv+2276OPPmpYLBbjwIEDrrLKlSsbffr0cW1nXJN27doZTqfTVT5kyBDD29vbOH/+vKusdu3aRqtWrTLFWL9+faNz587XPZdrDRw40Chfvrxre+jQoUbLli2NcuXKGVOmTDEMwzDOnj1rWCwWY9KkSa56ffr0MSpXruzaPn36tCHJeOuttzK9Rp8+fQxJxqhRo9zKGzZsaDRu3Pi6MbZq1cqoXbu2a3vnzp2GJOOFF15wq/fEE09kiuHpp582KlSoYJw5c8at7uOPP26UKlXKdV+sWbPGkGTUrFnTSE1NddWbNGmSIcnYtWuXq6xz585u557h0KFDhiTjiy++cJW1bNnSKFmypHHkyBG3ule3c1b35qZNmwxJxr/+9S9XWUaMa9asyVT/WsOHDze8vLyMuLg4Y/78+YYkY+LEidfdb9q0aZnO1zAMo1atWkabNm1c2ykpKYbD4XCrc+jQIcNms7m1c1bXpFWrVlnew9feU+vWrTMkGbNmzXKr98MPP2RZfq3cfm5kvL/79evnVvfhhx82ypQp49rOy32XlYxr8d577xlXrlwxqlWrZtSvX991L2TEcfr0acMwDCMtLc0oV66cUadOHePy5cuu43z33XeGJOPNN9/MdA4ZJkyY4HasrCxfvtyQZCxbtsytvF69elm2z7UkGQMHDsyxTlZt8OyzzxoBAQFGSkqKq6xVq1aGJOODDz5wlaWmphoNGjQwypUrZ6SlpRmGYRgzZ840vLy8jHXr1rkdc+rUqYYkY8OGDa6yaz9nb/QzEkUTwwxQ5AUGBrrNanD12NmUlBSdOXNG99xzjyRp+/btuTrm1cdITEzUmTNn1KpVKx08eFCJiYm5Okb16tUVEhKiKlWq6Nlnn1XVqlX1/fffKyAgQEuXLpW3t7erhzPDyy+/LMMwtGzZsuse/5lnnnHrLWrRooUcDoeOHDly3X2Dg4O1Z88e7d+/P1fncvVrnDx5Uvv27ZOU3gPbsmVLtWjRQuvWrZOU3ltrGEa2PbO59dxzz2V67YMHD+b5OEuXLpWkTNf62l5WwzC0cOFCPfDAAzIMQ2fOnHH9REVFKTExMdP907dvX/n6+rrFKOmG4jx9+rTi4uLUr18/VapUye25q9v56nvTbrfr7Nmzqlq1qoKDg3N9f19rxIgRql27tvr06aMXXnhBrVq1ynS9shIdHS0fHx/XXwMkaffu3fr555/12GOPucpsNpvrS4wOh0Nnz551/Sn7RmO+1vz581WqVCm1b9/ere0aN26swMBArVmzJsf98/q5kdX9efbsWdeMJbm973Ijo3f2xx9/zLY3cevWrTp16pReeOEFt7HYnTt3Vo0aNfT9999ne/yMHttvv/3W7YuaV2vXrp3CwsI0a9YsV9nu3bv1008/6cknn8zzOWXl6ja4cOGCzpw5oxYtWig5OVl79+51q+vj46Nnn33Wte3r66tnn31Wp06d0rZt2ySl3xM1a9ZUjRo13O6JjCFfOd0TN/oZiaKJZBZF3sWLF1WyZEnX9h9//KFBgwapfPny8vf3dyWUknKdiG7YsEHt2rVTiRIlFBwcrJCQENf4sdweY+HChYqJiVFsbKwOHDig3bt3q3HjxpLSxz2GhYW5xS1JNWvWdD1/PdcmPKVLl5akXI0PHDVqlM6fP68777xTdevW1bBhw/TTTz9dd7+MZG3dunW6dOmSduzYoRYtWqhly5auZHbdunUKCgpS/fr1r3u87Pj5+bmGfGQoXbp0rs7tWkeOHJGXl5fuuOMOt/Lq1au7bZ8+fVrnz5/X9OnTFRIS4vbTt29fSdKpU6fc9rmZNrhWRgJ8vWnFLl++rDfffNM11rps2bIKCQnR+fPnc31vXsvX11eff/65Dh06pAsXLuiLL75wS6AvX76sEydOuP1IUtmyZdW2bVvNmzfPVXfu3Lny8fFx+3O40+nUhAkTVK1aNbeYf/rppxuO+Vr79+9XYmKiypUrl6n9Ll68mKntrpXXz43rtX1u77vc6tmzp6pWrZrt2NmMz4ysjl+jRo0cP1Mee+wxNW/eXP3791f58uX1+OOPa968eW6JrZeXl3r27KnFixe7xgbPmjVLfn5+ruEkN2vPnj16+OGHVapUKQUFBSkkJMSVKF/bBmFhYSpRooRb2Z133ilJrvHj+/fv1549ezLdDxn1cronbvQzEkUTY2ZRpB0/flyJiYmqWrWqq6x79+7auHGjhg0bpgYNGigwMFBOp1P3339/tr0OV/vtt9/Utm1b1ahRQ+PHj1dERIR8fX21dOlSTZgwIVfHkKSWLVu6xuIWhOzGMmb1i+5aLVu21G+//aZvv/1WK1as0KeffqoJEyZo6tSp6t+/f7b7hYWFqUqVKoqLi1NkZKQMw1DTpk0VEhKiQYMG6ciRI1q3bp2aNWt2w9OJ5XRuBSmjXZ988kn16dMnyzrXTgF3M21wo/7617/qiy++0ODBg9W0aVOVKlVKFotFjz/+eK7vzawsX75cUnqv5P79+12JnJSeoGYk9BkyzvHxxx9X3759tXPnTjVo0EDz5s1T27Zt3e79MWPG6I033lC/fv00evRo3XbbbfLy8tLgwYOvG7PFYsnyel77pSCn06ly5cq59Rxe7dr/HF0rr58bhd32Gb2zTz31lL799tt8Pba/v7/i4uK0Zs0aff/99/rhhx80d+5ctWnTRitWrHCda+/evfXee+9p8eLF6tGjh2bPnq0uXbqoVKlSNx3D+fPn1apVKwUFBWnUqFG644475Ofnp+3bt+tvf/vbDd3bTqdTdevWdY0Fv1ZERES2+97oZySKJpJZFGkzZ86UJEVFRUlK7xVZtWqVRo4cqTfffNNVL6s/FWU3Z+O///1vpaamasmSJW69L9f7M2VeVK5cWStXrtSFCxfcemcz/pRWuXLlfHmdnOalvO2229S3b1/17dtXFy9eVMuWLTVixIjrflC3aNFCcXFxqlKliho0aKCSJUuqfv36KlWqlH744Qdt3749y2+45zau/Fa5cmU5nU799ttvbr1WGUMlMmR849zhcKhdu3b59vq5Pdfbb79dUvqfbnOyYMEC9enTRx988IGrLCUl5aYW//jpp580atQoV1Lav39/7dq1y5WkREVFZfst7q5du+rZZ591DTX49ddfNXz48Ewx33ffffrss8/cys+fP3/d//CVLl06y2Eb1/Y03nHHHVq5cqWaN2+e52n68vK5kVu5ve/y4sknn9Tbb7+tkSNH6sEHH8z0ehnHz/gz+tWveb3PFC8vL7Vt21Zt27bV+PHjNWbMGL322mtas2aN6/1Qp04dNWzYULNmzVJ4eLiOHj2qjz766IbP52qxsbE6e/asFi1apJYtW7rKM2Z/udbvv/+uS5cuufXO/vrrr5LkmuXijjvu0I8//qi2bdve0GfOjX5GouhhmAGKrNWrV2v06NGqUqWK65u0GT0I1/aOZLUCU8aH4LVJQFbHSExM1BdffJFfoatTp05yOByuqYsyTJgwQRaLRR07dsyX1ylRokSWSc610w0FBgaqatWq152uRkpPZg8fPqy5c+e6hh14eXmpWbNmGj9+vOx2+3XHy2Z84z6/V1/LSsa1vHpKMSnzPeHt7a1HHnlECxcuzDKhvHras7woUaJErv6UHhISopYtW+rzzz/X0aNH3Z67+l709vbOdH9/9NFHNzxtmd1u11NPPaWwsDBNmjRJM2bM0MmTJzVkyBBXnQoVKqhdu3ZuPxmCg4MVFRWlefPmac6cOfL19VXXrl3dXiOrmOfPn59pyqis3HHHHdq7d6/b9f/xxx9d37TP0L17dzkcDo0ePTrTMa5cuZLjvZaXz43cyu19lxcZvbM7d+7UkiVL3J5r0qSJypUrp6lTp7q9j5ctW6Zffvklx1kU/vjjj0xlDRo0kKRMnwm9evXSihUrNHHiRJUpUybfPquyaoO0tDRNnjw5y/pXrlzRtGnT3OpOmzZNISEhruFc3bt3V3x8vD755JNM+1++fFmXLl3KNp6b+YxE0UPPLIqEZcuWae/evbpy5YpOnjyp1atXKyYmRpUrV9aSJUtcX3gICgpSy5Yt9Y9//EN2u10VK1bUihUrsvzffcYH3muvvabHH39cVqtVDzzwgDp06CBfX1898MADevbZZ3Xx4kV98sknKleunBISEvLlfB544AHdd999eu2113T48GHVr19fK1as0LfffqvBgwdnGmd3oxo3bqwpU6bo7bffVtWqVVWuXDm1adNGtWrVUuvWrdW4cWPddttt2rp1qxYsWJCr5SYzEtV9+/ZpzJgxrvKWLVtq2bJlstlsuuuuu3I8hr+/v2rVqqW5c+fqzjvv1G233aY6deoUyDK0DRo0UI8ePTR58mQlJiaqWbNmWrVqldt8sBneffddrVmzRnfffbcGDBigWrVq6Y8//tD27du1cuXKLH/pX0/jxo01d+5cDR06VHfddZcCAwP1wAMPZFn3ww8/1L333qtGjRrpmWeeUZUqVXT48GF9//332rlzpySpS5cumjlzpkqVKqVatWpp06ZNWrlypcqUKZPn2CTp7bff1s6dO7Vq1SqVLFlS9erV05tvvqnXX39djz76qDp16nTdYzz22GN68sknNXnyZEVFRWWaAqpLly6unt9mzZpp165dmjVrlqs3Oif9+vXT+PHjFRUVpaefflqnTp3S1KlTVbt2bbfloVu1aqVnn31WY8eO1c6dO9WhQwdZrVbt379f8+fP16RJk/Too49m+Rp5+dzIrbzcd3nRs2dPjR492nU/ZLBarRo3bpz69u2rVq1aqUePHq6puSIjI93+c3KtUaNGKS4uTp07d1blypV16tQpTZ48WeHh4br33nvd6j7xxBN69dVX9c033+j555/P04IoW7du1dtvv52pvHXr1mrWrJlKly6tPn366KWXXpLFYtHMmTOzHbYRFhamcePG6fDhw7rzzjs1d+5c7dy5U9OnT3fF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PW+/LZtSJaWXR0Sk1wNgfu+8846aNWumgIAABQcHezqcIodkFgBMxttbmjQp/bHlmucs/yuYOJEFFIBbRVpamrp166bnn3/e06EUSSSzAGBC0dHSggVSWJh7eXh4ejlr08O0Ll3K/iclJfd1L1/OXd08OH36tEJDQzVmzBhX2caNG+Xr66tVq1bd6Blf18iRIzVkyBDVrVu3wF7DzHw8HQAA4MZER0sPtZNUKn174ULp3ih6ZGFygYHZP9epk/T9939ulysnJSdnXbdVKyk29s/tyEjpzJnM9TLms8uFkJAQff755+ratas6dOig6tWrq1evXnrxxRfVtm1bJSUlZblf7dq1deTIkWyP26JFCy1btizXccAdySwAmNjViWuzZiSyQEHr1KmTBgwYoJ49e6pJkyYqUaKExo4dm+M+S5culd1uz/Z5f3///A6zWCGZBQAARcfFi9k/d+3/1k6dyr6u1zUjKQ8fvuGQrvX++++rTp06mj9/vrZt2yabzSan05lt/cqVK+fbayMzklkAAFB0lCjh+brX8dtvv+n333+X0+nU4cOHrzuWlWEGBcvjyWx8fLz+9re/admyZUpOTlbVqlX1xRdfqEmTJlnWj42N1X333ZepPCEhQaGhoQUdLgAULb6+ckyapD179qimr6+nowFueWlpaXryySf12GOPqXr16urfv7927dqlsmXLZrsPwwwKlkeT2XPnzql58+a67777tGzZMoWEhGj//v0qXbr0dffdt2+fgoKCXNvlypUryFABoGiyWuV8/nkdWrpUNa1WT0cD3PJee+01JSYm6sMPP1RgYKCWLl2qfv36acmSJdnuc7PDDI4ePao//vhDR48elcPh0M6dOyVJVatWVWBOX5grJjyazI4bN04RERH64osvXGVVqlTJ1b7lypVj4mAAAFBoYmNjNXHiRK1Zs8bVoTZz5kzVr19fU6ZMUc+ePQvkdd988019+eWXru2GDRtKktasWaPWrVsXyGuaiUeT2SVLligqKkrdunXT2rVrVbFiRb3wwgsaMGDAdfdt0KCBUlNTVadOHY0YMULNmzfPsl5qaqpSU1Nd2xnTZtjt9hy7/JF7GdeR62letKGJORxyxMaqzK5dsrdp4+locIOK43vQbrfLMAw5nc4cvzxVlLRs2dKVU2TEXKlSJZ07d06GYejChQuuc8pPn3/+uT7/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# This code creates an image of interest. The code is not worth studying, just running.\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "np.random.seed(1)\n", "\n", "# Generate sample data\n", "x = np.ones(10) # All x-values are 1\n", "y = np.random.normal(5, 1, len(x)) # y-values are normally distributed around 5 with some noise\n", "\n", "# Create the plot\n", "plt.figure(figsize=(8, 6))\n", "plt.scatter(x, y, color='blue', label='Data Points')\n", "plt.axvline(x=1, color='red', linestyle='--', label='x = 1')\n", "\n", "# Adding annotations and labels for clarity\n", "plt.title(\"Data Points with Identical x-value and Noisy Labels\")\n", "plt.xlabel(\"x-axis\")\n", "plt.ylabel(\"y-axis\")\n", "plt.legend()\n", "plt.grid(True)\n", "\n", "# Show the plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Consider these 10 ten data points when the query is $x=1$. All of these points are zero distance from the query. Which one should be returned by nearest neighbor? Even as we get more and more data, our predictions given $x=1$ (in this case) will have high variance depending on which point we select.\n", "\n", "**Question**: What should we do in this case?\n", "\n", "**Answer**: Take the average of the labels (or perhaps the median).\n", "\n", "So, we can update our algorithm to break ties by averaging the labels (in the regression setting). However, consider this case:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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795KT093rHQiSefPn9err76q4ODgYufx2my2QtNl6tSpo3r16hW6h3v16qVatWpp+vTpWrNmTZmNBkv59+3F99DixYt17NixIvu///77Tp9nWLJkidLS0hy/723bttU111yjGTNmOJa/u1BRS8EVOHXqVKFYCkaVS/N7DZQ3RoQBF6xYsUI///yzzp8/r+PHj+vrr79WSkqKoqOj9emnnzqWQQoJCVGnTp30j3/8Q1arVfXr19dXX33lWLv3Qm3btpUk/f3vf9c999wji8Wi22+/3TFqePvtt+v//u//lJmZqTfffFN16tRRWlpamVzP7bffrq5du+rvf/+7Dh48qFatWumrr77S8uXLlZCQUGg5q9Jq27atZs+ereeee04NGzZUnTp1dOutt6pZs2bq0qWL2rZtq6uuukpbtmxxLEVVGgVzhb/77jun5chCQkI0e/ZsDRs2TG3atNE999yj2rVr6/Dhw/r88891880367XXXnPp5+aqd999V59//rnmzZunyMhISdKrr76qe++9V7Nnz9bDDz98yePLco7w2rVrHUug/frrr8rKytJzzz0nKX+6SqdOnS55fIcOHeTr66vdu3c7lj4rOLZgneuSFMJt27bVypUr9fLLL6tevXqKjY1V+/btS3tZl2Q2m/X3v/9do0aNKvTcAw88oDlz5mjkyJHaunWrYmJitGTJEq1fv15JSUmF5tAXOHv2rCIjI3XXXXepVatWCg4O1sqVK7V582a99NJLTn0tFovuuecevfbaazKbzU4fzCuJl19+WUFBQU5tPj4++tvf/qa+fftq8uTJGjVqlDp27KidO3fqgw8+cJqnfKGrrrpKt9xyi0aNGqXjx48rKSlJDRs2dCz96OPjo7feeku9evVS8+bNNWrUKNWvX1/Hjh3T6tWrFRISon//+99Fnvu9997T66+/rjvvvFPXXHONzp49qzfffFMhISHq3bu3S9cMVAg3rVYBeJSCJYIKvvz8/Izw8HCje/fuxqxZs5yWIipw9OhR48477zTCwsKM0NBQY+DAgcYvv/xSaPklwzCMKVOmGPXr1zd8fHycliL69NNPjZYtWxoBAQFGTEyMMX36dOOdd94pdrm1C5Vk2SXDyF9abPz48Ua9evUMi8ViNGrUyHjxxRedlk0yjOKXT7t4maSCJZouXBYqPT3d6NOnj1G9enVDkmO5rueee8648cYbjbCwMCMwMNBo0qSJ8fzzzxt5eXmXjPnC5dOKu+4Ll0+78Lj4+HgjNDTUCAgIMK655hpj5MiRxpYtWxx9SvpzK2l+DcMwjhw5YoSGhhq33357oefuvPNOo1q1asb+/fsve56yUhB7UV8X35vFueGGGwxJxrfffutoO3r0qCHJiIqKKvY1L/Tzzz8bnTp1MgIDAw1JjvuruNxevFRXcS5ePq+A1Wo1rrnmmkLLpxmGYRw/ftwYNWqUUatWLcPPz89o0aJFkUvRXZij3Nxc48knnzRatWplVK9e3ahWrZrRqlUr4/XXXy8yrv/85z+GJKNHjx6XjP9Cl/pZmc1mwzDyl097/PHHjYiICCMwMNC4+eabjY0bNxqdO3d2Whqv4Pdm4cKFxoQJE4w6deoYgYGBRp8+fYxDhw4Veu3t27cbAwYMMGrWrGn4+/sb0dHRxqBBg4xVq1Y5+lz8M9m2bZsxePBgo0GDBoa/v79Rp04do2/fvk6/Y0BlYjIMFz91AAAAXPbdd9+pdevWev/99zVs2DB3hwNAzBEGAKBCvPnmmwoODtaAAQPcHQqAPzBHGACAcvTvf/9bP/74o+bOnatHHnnksttpA6g4TI0AAKAcxcTE6Pjx44qPj9f8+fOL/fAdgIpHIQwAAACvxBxhAAAAeCUKYQAAAHglr/uwnN1u1y+//KLq1atX2PaeAAAAKDnDMHT27FnVq1fPaevzsuZ1hfAvv/yiqKgod4cBAACAyzhy5IhjN87y4HWFcMGndQ8cOKCrrrrKzdF4DqvVqq+++ko9evSQxWJxdzgegZyVDnlzkdUq29tv66efflLjadNkuWgbXhSPe8115Kx0yJvrfv/9d8XGxpb7KiteVwgXTIeoXr26QkJC3ByN57BarQoKClJISAi/xCVEzkqHvLkoK0t66il1lGSdOVMW3tdKjHvNdeSsdMib66xWqySV+zRWPiwHAAAAr0QhDAAAAK9EIQwAAACv5HVzhAEAQOVhGIbOnz8vm83m7lDKjdVqla+vr3Jycqr0dbrKYrHIbDa7NQYKYQAA4BZ5eXlKS0tTdna2u0MpV4ZhKDw8XEeOHGEPgwuYTCZFRkYqODjYbTFQCAMAgApnt9t14MABmc1m1atXT35+flW2SLTb7crMzFRwcHC5bg7hSQzD0K+//qqjR4+qUaNGbhsZphAGAE/m76/zy5Zpy5Ytauvv7+5ogBLLy8uT3W5XVFSUgqr4+td2u115eXkKCAigEL5A7dq1dfDgQVmtVgphAEAp+PrK6N1bx//4HvA0FIbeqzL8BYC7DwAAAF6JQhgAPJnVKtP77ytq1Srpj52YAAAlQyEMAJ4sL0++o0erzauvSnl57o4GgIdKTExU69at3R1GhaMQBgAAKKGRI0fKZDLJZDLJYrGobt266t69u9555x3Z7XaXzjVv3jyFhYWVSVxdunRxxBUQEKBmzZrp9ddfL/HxTzzxhFatWuXSa8bExCgpKcnFSCsXCmEAAOCxbDYpNVVauDD/34rYr6Jnz55KS0vTwYMHtWLFCnXt2lXjxo1T3759df78+fIPoBhjxoxRWlqafvzxRw0aNEhjx47VwoULS3RscHCwatasWc4RVj4UwgDgJdxRMADlaelSKSZG6tpVGjIk/9+YmPz28uTv76/w8HDVr19fbdq00d/+9jctX75cK1as0Lx58xz9Xn75ZbVo0ULVq1dX8+bNNXbsWGVmZkqSUlNTNWrUKGVkZDhGchMTEyVJ8+fPV7t27VS9enWFh4dryJAhOnHixGXjCgoKUnh4uK6++molJiaqUaNG+vTTTyVJhw8fVr9+/RQcHKyQkBANGjRIx48fdxx78dSIkSNHqn///poxY4YiIiJUs2ZNjR07VtY/PovQpUsXHTp0SOPHj3fEL0mHDh3S7bffrho1aqhatWpq3ry5kpOTryTd5YpCGAC8gLsKBqC8LF0q3XWXdPSoc/uxY/ntFX1v33rrrWrVqpWWXvDCPj4+euWVV7Rz507Nnj1bq1ev1l/+8hdJUseOHZWUlKSQkBClpaUpLS1NTzzxhKT8LZmnTJmi7777TsuWLdPBgwc1cuRIl2MKDAx0rNfcr18//f7771qzZo1SUlK0f/9+3X333Zc8fvXq1dq3b59Wr16t9957T/PmzXMU+kuXLlVkZKQmT57siF+Sxo4dq9zcXK1du1Y7d+7U9OnT3bpz3OWw6CQAVHEFBYNhOLcXFAxLlkgDBrgnNqA0bDZp3LjC97SU32YySQkJUr9+UkXu09CkSRN9//33jscJCQmS8jfUuOqqqzR58mQ9/PDDev311+Xn56fQ0FCZTCaFh4c7nee+++5zfH/11VfrlVde0Q033ODYne5ybDabFi5cqO+//14PPPCAVq1apZ07d+rAgQOKioqSJL3//vtq3ry5Nm/erBtuuKHI89SoUUOvvfaazGazmjRpoj59+mjVqlUaM2aMrrrqKpnNZseodYHDhw/rT3/6k1q0aOGIvzJjRBgAqrDLFQxSfsHANAl4knXrCo8EX8gwpCNH8vtVJMMwnDaJWLlypW677TZFRUUpKipKI0aM0MmTJ5WdnX3J82zdulW33367GjRooOrVq6tz586S8ovMS3n99dcVHByswMBAjRkzRuPHj9dDDz2kn376yRFDgWbNmiksLEw//fRTsedr3ry5045vERERl52i8ec//1nPPfecbr75Zk2cONHpfwwqIwphAPBk/v46v2CBNj/5pFTEFsuVtWAArsQff4Uvs35l5aefflJsbKwk6eDBg+rbt69atmypxYsXa/Xq1Xr11Vcl5W8vXZysrCzFx8crJCREH3zwgTZv3qxPPvnkssdJ0tChQ7Vjxw4dOHBAWVlZevnll69o5z6LxeL02GQyXXZljNGjR2v//v0aNmyYdu7cqXbt2jmuuzKiEAYAT+brK+Ouu/TLzTcXucVyZS0YgCsREVG2/crC119/rZ07d+pPf/qTpPxRXbvdrpdeekk33XSTGjZs6JhHW8DPz0+2i/4c8/PPP+vkyZN64YUXFBcXpyZNmpTog3KSFBoaqoYNG6p+/fpOBXDTpk115MgRHTlyxNH2448/6vTp02rWrFlpL7nI+CUpKipKDz74oJYuXarHH39cb775Zqlfo7xRCANAFVYZCwbgSsXFSZGR+XOBi2IySVFR+f3KQ25urtLT03Xs2DFt27ZNU6dOVb9+/dS3b18NHz5cktSwYUNZrVa9+uqr2r9/vxYtWqQ5c+Y4nScmJkaZmZlatWqVfvvtN2VnZ6tBgwby8/NzHPfpp59qypQpVxRvt27d1KJFCw0dOlTbtm3Tf/7zHw0fPlydO3dWu3btSn3emJgYrV27VseOHdNvv/0mKX9e9JdffqkDBw5o27ZtWr16tZo2bXpF8ZcnCmEA8GTnz8u0ZInqrV8vFbF+qbsLBqA8mM3SrFn53198bxc8Tkoqvw/KffHFF4qIiFBMTIx69uyp1atX65VXXtHy5csdc2pbtWqll19+WdOnT1fLli21ZMkSPf/8807n6dixox588EHdfffdql27tv7xj3+odu3amjdvnhYvXqxmzZrphRde0IwZM64oXpPJpOXLl6tGjRrq1KmTunXrpquvvloffvjhFZ138uTJOnjwoK655hrVrl1bUv4H9caOHaumTZuqZ8+euvbaa13a2KOimQyjqI9QVF1nzpxRaGiofvvtN69cOLq0rFarkpOT1bt370JzhlA0clY65M1FWVnSH58it546JUsRu1QVrBohOX9orqBg8NZVI7jXXFeWOcvJydGBAwcUGxurgICAUp1j6dL8D4NeOA8+Kiq/CK5M97TdbteZM2cUEhJyRXN2q5pL3QMnT55UrVq1lJGRoZCQkHKLgZ8GAFRxAwbkF7v16zu3R0Z6bxGMqmHAAOngQWn1amnBgvx/DxzgnkbJsY4wAHiBAQPy11Rdty7/g3EREfnTISpyjVWgPJjNUpcu7o4CnopCGAC8BAUDADijEAaAK2SzMdIKAJ6IQhgArkBRH9aJjMz/RDvzFAGgcuPDcgBQSgWrMVy8c9uxY/ntS5e6Jy4AQMlQCANAKdhs+SPBRS1AWdCWkJDfr1z5+en8W29p26OPSn5+5fxiAFC1UAgDQCmsW1d4JPhChiEdOZLfr1xZLDKGD9eR226TWAsXAFxCIQwApZCWVrb9AAAVj0IYAEohIqJs+5Xa+fMyJSer7pYtRW6xDAAoHoUwAJRCXFz+6hAF2xRfzGTK3+o1Lq6cA8nNlW///rrpueek3NxyfjEA7vD888+rY8eOCgoKUlgR26ij9CiEAaAUzOb8JdKkwsVwweOkJNYTBnDl8vLyNHDgQD300EPuDqXKoRAGgFIaMEBaskSqX9+5PTIyv511hIFSyMoq/isnp+R9z50rWV8X/PrrrwoPD9fUqVMdbRs2bJCfn59WrVpV2iu+rEmTJmn8+PFq0aJFub2Gt2JDDQC4AgMGSP36sbMcUGaCg4t/rndv6fPP//e4Th0pO7vovp07S6mp/3scEyP99lvhfkWtgViM2rVr65133lH//v3Vo0cPNW7cWMOGDdMjjzyi2267rdjjWrRooUOHDhX7fFxcnFasWFHiOFB2KIQB4AqZzVKXLu6OAkBF6N27t8aMGaOhQ4eqXbt2qlatmqZNm3bJYz777DOdOnVKwcHB8vEp/Mf4wMDA8goXl0EhDAAAKo/MzOKfu/hPLSdOFN/34oLz4MFSh3SxGTNm6LrrrtPixYu1detW+fv7X7J/dHS0atSooZCQkCILYbgPhTAAAKg8qlVzf9/L2Ldvn3755RfZ7XYdPHjwsnN3mRpRebm9ED527JieeuoprVixQtnZ2WrYsKHeffddtWvXrsj+qamp6tq1a6H2tLQ0hYeHl3e4AFC5+PnJNmuWdu3apaZssQyUu7y8PN177726++671bhxY40ePVo7d+5UnTp1ij2GqRGVl1sL4VOnTunmm29W165dtWLFCtWuXVt79uxRjRo1Lnvs7t27FRIS4nh8qRsQAKosi0X2hx7SgeRkNWWLZaDc/f3vf1dGRoZeeeUVBQcHKzk5Wffdd58+++yzYo+50qkRhw8f1u+//67Dhw/LZrNpx44dkqSGDRsq+FIfLsRlubUQnj59uqKiovTuu+862mJjY0t0bJ06dVhUGgAAVJjU1FQlJSVp9erVjsG4+fPnq1WrVpo9e3a5rfP77LPP6r333nM8vv766yVJq1evVhc+qXtF3FoIf/rpp4qPj9fAgQO1Zs0a1a9fXw8//LDGjBlz2WNbt26t3NxcXXfddUpMTNTNN99cZL/c3FzlXrDb0pkzZyRJVqtVVqu1bC7ECxTkipyVHDkrHfLmIptNttRU1dy5U9Zbb3V3NB6Fe811ZZkzq9UqwzBkt9tlt9uv+HwVoVOnTo6aoiDmBg0a6NSpU05tFzP+WKKt4Hpd9c477+idd94p8jlPyV1R7Ha7DMOQ1WqV+aIPQlbU76XJMFxYQK+MBQQESJIee+wxDRw4UJs3b9a4ceP0xhtvaMSIEUUes3v3bqWmpqpdu3bKzc3VW2+9pfnz5+vbb79VmzZtCvVPTEzUpEmTCrUvWLBAQUFBZXtBAFDBzDk56nvPPZKkzxYtku2P91WgsvP19VV4eLiioqLkx/x2r5SXl6cjR44oPT1d58+fd3ouOztbQ4YMUUZGhtNU2LLm1kLYz89P7dq104YNGxxtf/7zn7V582Zt3LixxOfp3LmzGjRooPnz5xd6rqgR4aioKKWlpalmzZpXdgFexGq1KiUlRd27d5eFeYglQs5Kh7y5KCtLlj8+V5F94oQsTBkrMe4115VlznJycnTkyBHFxMQ4BsaqKsMwdPbsWVWvXl2mi/dk92I5OTk6ePCgoqKiCt0DJ0+eVERERLkXwm6dGhEREaFmzZo5tTVt2lQff/yxS+e58cYb9c033xT5nL+/f5Hr+1ksFt74SoG8uY6clQ55K6ELckTOSoe8ua4scmaz2WQymeTj41Pl19YtmL5QcL3I5+PjI5PJVOT9VFG/k279adx8883avXu3U9t///tfRUdHu3SeHTt2KCIioixDAwAAQBXn1hHh8ePHq2PHjpo6daoGDRqk//znP5o7d67mzp3r6DNhwgQdO3ZM77//viQpKSlJsbGxat68uXJycvTWW2/p66+/1ldffeWuywAAAKXkxhmacLPK8LN3ayF8ww036JNPPtGECRM0efJkxcbGKikpSUOHDnX0SUtL0+HDhx2P8/Ly9Pjjj+vYsWMKCgpSy5YttXLlyiI32QAAAJVTwZ++s7Oz2VDCS+Xl5UlSoRUjKpLbd5br27ev+vbtW+zz8+bNc3r8l7/8RX/5y1/KOSoAAFCezGazwsLCdOLECUlSUFBQlf0gmd1uV15ennJycpgj/Ae73a5ff/1VQUFB8vV1Xznq9kIYAHAFLBbZpk3Tzz//rGv5wBc8THh4uCQ5iuGqyjAMnTt3ToGBgVW22C8NHx8fNWjQwK05oRAGAE/m5yf7449rb3KyrmUtVngYk8mkiIgI1alTp0pvbGK1WrV27Vp16tSJFUou4Ofn5/YRcgphAADgVmaz2a3zRMub2WzW+fPnFRAQQCFcyTBRBQA8mc0m05YtCtuzR7LZ3B0NAHgURoQBwJPl5Mi3Y0d1lmQdPVqq4jt0AUBZYkQYAAAAXolCGAAAAF6JQhgAAABeiUIYAAAAXolCGAAAAF6JQhgAAABeieXTAMCTWSyyPf209uzZo2tYqB8AXMKIMAB4Mj8/2Z99VrsHD5bYYhkAXEIhDAAAAK9EIQwAnsxul3btUvXDh/O/BwCUGHOEAcCTnTsny/XX61ZJ1mHDJH9/d0cEAB6DEWEAAAB4JQphAAAAeCUKYQAAAHglCmEAAAB4JQphAAAAeCUKYQAAAHgllk8DAE9mscj22GPav3+/YthiGQBcQiEMAJ7Mz0/2F17Qj8nJimGLZQBwCVMjAAAA4JUohAHAk9nt0sGDCjx+nC2WAcBFTI0AAE927pws116rHpKsgwaxxTIAuIARYQAAAHglCmEAAAB4JQphAAAAeCUKYQAAAHglCmEAAAB4JQphAAAAeCWWTwMAT+brK9uDD+rwoUOK9OUtHQBcwbsmAHgyf3/ZX3lF3ycnK5I1hAHAJUyNAAAAgFeiEAYAT2YY0q+/yi8jI/97AECJMTUCADxZdrYs9eurlyTrHXdIfn7ujggAPAYjwgAAAPBKFMIAAADwShTCAAAA8EpuL4SPHTume++9VzVr1lRgYKBatGihLVu2XPKY1NRUtWnTRv7+/mrYsKHmzZtXMcECAACgynBrIXzq1CndfPPNslgsWrFihX788Ue99NJLqlGjRrHHHDhwQH369FHXrl21Y8cOJSQkaPTo0fryyy8rMHIAAAB4OreuGjF9+nRFRUXp3XffdbTFxsZe8pg33nhDsbGxeumllyRJTZs21TfffKOZM2cqPj6+XOMFAABA1eHWQvjTTz9VfHy8Bg4cqDVr1qh+/fp6+OGHNWbMmGKP2bhxo7p16+bUFh8fr4SEhCL75+bmKjc31/H4zJkzkiSr1Sqr1XrlF+ElCnJFzkqOnJUOeXORYcg0dKh++eUX1TIMibyVGPea68hZ6ZA311VUrkyG4b4V2AMCAiRJjz32mAYOHKjNmzdr3LhxeuONNzRixIgij7n22ms1atQoTZgwwdGWnJysPn36KDs7W4GBgU79ExMTNWnSpELnWbBggYKCgsrwagAAAFAWsrOzNWTIEGVkZCgkJKTcXsetI8J2u13t2rXT1KlTJUnXX3+9fvjhh0sWwq6aMGGCHnvsMcfjM2fOKCoqSl27dlXNmjXL5DW8gdVqVUpKirp37y6LxeLucDwCOSsd8uY6clY65M115Kx0yJvrTp48WSGv49ZCOCIiQs2aNXNqa9q0qT7++ONijwkPD9fx48ed2o4fP66QkJBCo8GS5O/vL39//0LtFouFm7EUyJvryFnpkLcSMgwpK0vmnBxZfH3JWSlwr7mOnJUOeSu5isqTWwvhm2++Wbt373Zq++9//6vo6Ohij+nQoYOSk5Od2lJSUtShQ4dyiREAKrXsbFlq1FBfSdZTp9hiGQBc4Nbl08aPH69NmzZp6tSp2rt3rxYsWKC5c+dq7Nixjj4TJkzQ8OHDHY8ffPBB7d+/X3/5y1/0888/6/XXX9dHH32k8ePHu+MSAAAA4KHcWgjfcMMN+uSTT7Rw4UJdd911mjJlipKSkjR06FBHn7S0NB0+fNjxODY2Vp9//rlSUlLUqlUrvfTSS3rrrbdYOg0AAAAucevUCEnq27ev+vbtW+zzRe0a16VLF23fvr0cowIAAEBV5/YtlgEAAAB3oBAGAACAV3L71AgAgGtsNmndOiktTaofJnVyd0AA4KEohAHAgyxdKo0bJx09mv/YX2Z9Um2AWrZKVx2z2b3BAYCHYWoEAHiIpUulu+76XxEsSbkK0F3GIm35y1/075QA9wUHAB6IQhgAPIDNlj8SbBiFnyto++tf8/sBAEqGQhgAPMC6dc4jwUU5ejS/HwCgZJgjDAAeIC2t6PYgZSnrXLDUXwoKOKW0tLCKDAsAPBojwgDgASIiyrYfAIBCGAA8QlycFBkpmUzF96lfP78fAKBkKIQBwAOYzdKsWfnfF1cMT56c3w8AUDIUwgDgIQYMkJYsyR/5LUrv3hUbDwB4Oj4sBwAeZMAAqV8/553lRAEMAKVCIQwAHsZslrp0+eNBljsjAQDPRiEMAJ7MbJa9Vy+dOHFCNZkgDAAuoRAGAE8WECDb8uX6NjlZvQPYYhkAXMGH5QAAAOCVKIQBAADglZgaAQCeLCtLvnXqqI/NJiM9XQoLc3dEAOAxKIQBwMOZsrPlK8nq7kAAwMMwNQIAAABeiUIYAAAAXolCGAAAAF6JQhgAAABeiUIYAAAAXolVIwDAk/n4yN6pk34/eVKhPoxtAIArKIQBwJMFBsq2cqXWJyerd2Cgu6MBAI/C8AEAAAC8EoUwAAAAvBJTIwDAk2VlyTcmRj3z8qRDh9hiGQBcQCEMAB7O9Ntv8hdbLAOAq5gaAQAAAK9EIQwAAACvRCEMAAAAr0QhDAAAAK9EIQwAAACvxKoRAODJfHxkb9tWGRkZCmaLZQBwCYUwAHiywEDZNm7UWrZYBgCXMXwAAAAAr0QhDAAAAK/E1AgA8GTZ2fJt1kzds7OlPXuk0FB3RwQAHsOtI8KJiYkymUxOX02aNCm2/7x58wr1DwgIqMCIAaCSMQyZDh1S0K+/Sobh7mgAwKO4fUS4efPmWrlypeOxr++lQwoJCdHu3bsdj00mU7nFBgAAgKrL7YWwr6+vwsPDS9zfZDK51B8AAAAoitsL4T179qhevXoKCAhQhw4dNG3aNDVo0KDY/pmZmYqOjpbdblebNm00depUNW/evNj+ubm5ys3NdTw+c+aMJMlqtcpqtZbdhVRxBbkiZyVHzkqHvLnIapXF8a1VIm8lxr3mOnJWOuTNdRWVK5NhuG9S2YoVK5SZmanGjRsrLS1NkyZN0rFjx/TDDz+oevXqhfpv3LhRe/bsUcuWLZWRkaEZM2Zo7dq12rVrlyIjI4t8jcTERE2aNKlQ+4IFCxQUFFTm1wQAFcmck6O+99wjSfps0SLZ+NwEgCogOztbQ4YMUUZGhkJCQsrtddxaCF/s9OnTio6O1ssvv6z777//sv2tVquaNm2qwYMHa8qUKUX2KWpEOCoqSmlpaapZs2aZxV7VWa1WpaSkqHv37rJYLJc/AOSslMibi7KyZKlRQ5KUfeKELGFh7o3Hg3CvuY6clQ55c93JkycVERFR7oWw26dGXCgsLEzXXnut9u7dW6L+FotF119//SX7+/v7y9/fv8hjuRldR95cR85Kh7yVkJ+fjKZNdTYzU4F+fuSsFLjXXEfOSoe8lVxF5alSbaiRmZmpffv2KSIiokT9bTabdu7cWeL+AFDlBAXp/HffafWrr0pM9wIAl7i1EH7iiSe0Zs0aHTx4UBs2bNCdd94ps9mswYMHS5KGDx+uCRMmOPpPnjxZX331lfbv369t27bp3nvv1aFDhzR69Gh3XQIAAAA8lFunRhw9elSDBw/WyZMnVbt2bd1yyy3atGmTateuLUk6fPiwfHz+V6ufOnVKY8aMUXp6umrUqKG2bdtqw4YNatasmbsuAQAAAB7KrYXwokWLLvl8amqq0+OZM2dq5syZ5RgRAHiY7Gz5tmunrpmZUpcubLEMAC6oVB+WAwC4yDBk+uknhUiyVp5FgADAI1SqD8sBAAAAFYVCGAAAAF6JQhgAAABeiUIYAAAAXolCGAAAAF6JVSMAwJOZTDKio3UuO1sWk8nd0QCAR6EQBgBPFhSk83v2KCU5Wb3LYYtlm01at05KS5MiIqS4OMlsLvOXAQC3oBAGABRp6VJp3Djp6NH/tUVGSrNmSQMGuC8uACgrzBEGABSydKl0113ORbAkHTuW3750qXviAoCyRCEMAJ7s3DmZO3RQpyeekM6dK5NT2mz5I8FFbVRX0JaQkN8PADwZhTAAeDK7XT5bt6rG3r2S3V4mp1y3rvBI8IUMQzpyJL8fAHgyCmEAgJO0tLLtBwCVFYUwAMBJRETZ9gOAyopCGADgJC4uf3WI4pYlNpmkqKj8fgDgySiEAQBOzOb8JdKkwsVwweOkJNYTBuD5KIQBAIUMGCAtWSLVr+/cHhmZ3846wgCqAjbUAAAPZ9Sqpby8vDIf2RgwQOrXj53lAFRdFMIA4MmqVdP5X37RF8nJ6l2tWpmf3myWunQp89MCQKXA1AgAAAB4JQphAAAAeCWmRgCAJzt3TuaePXXzyZNS166SxeLuiADAY1AIA4Ans9vls3atakmyltEWywDgLZgaAQAAAK9EIQwAAACvRCEMAAAAr0QhDAAAAK9EIQwAAACvxKoRAODhjKAg2Ww2d4cBAB6HEWEA8GTVqun86dP6/MMPpXLYYhkAqjIKYQAAAHglCmEAAAB4JeYIA4Any8mRecAAtT9xQrr1VrZYBgAXUAgDgCez2eSzYoXCJVn5wBwAuISpEQAAAPBKFMIAAADwShTCAAAA8EoUwgAAAPBKFMIAAADwShTCAAAA8EoUwgDgyapVkzUvT8uXLWOLZQBwkVsL4cTERJlMJqevJk2aXPKYxYsXq0mTJgoICFCLFi2UnJxcQdECAACgKnH7iHDz5s2Vlpbm+Prmm2+K7bthwwYNHjxY999/v7Zv367+/furf//++uGHHyowYgAAAFQFbt9ZztfXV+Hh4SXqO2vWLPXs2VNPPvmkJGnKlClKSUnRa6+9pjfeeKM8wwSAyiknR+ahQ9UuPZ0tlgHARW4vhPfs2aN69eopICBAHTp00LRp09SgQYMi+27cuFGPPfaYU1t8fLyWLVtW7Plzc3OVm5vreHzmzBlJktVqldVqvfIL8BIFuSJnJUfOSoe8uSgnR5alS1VfUnZOjhQQ4O6IPAb3muvIWemQN9dVVK7cWgi3b99e8+bNU+PGjZWWlqZJkyYpLi5OP/zwg6pXr16of3p6uurWrevUVrduXaWnpxf7GtOmTdOkSZMKta9evVpBQUFXfhFeJiUlxd0heBxyVjrkrWTMOTnq+8f3X3/9tWwUwi7jXnMdOSsd8lZy2dnZFfI6bi2Ee/Xq5fi+ZcuWat++vaKjo/XRRx/p/vvvL5PXmDBhgtMo8pkzZxQVFaWuXbuqZs2aZfIa3sBqtSolJUXdu3eXhT+9lgg5Kx3y5qKsLMe3t956qyxhYe6LxcNwr7mOnJUOeXPdyZMnK+R13D414kJhYWG69tprtXfv3iKfDw8P1/Hjx53ajh8/fsk5xv7+/vL39y/UbrFYuBlLgby5jpyVDnkroQtyRM5Kh7y5jpyVDnkruYrKk9tXjbhQZmam9u3bp4iIiCKf79Chg1atWuXUlpKSog4dOlREeAAAAKhC3FoIP/HEE1qzZo0OHjyoDRs26M4775TZbNbgwYMlScOHD9eECRMc/ceNG6cvvvhCL730kn7++WclJiZqy5YteuSRR9x1CQAAAPBQbp0acfToUQ0ePFgnT55U7dq1dcstt2jTpk2qXbu2JOnw4cPy8flfrd6xY0ctWLBATz/9tP72t7+pUaNGWrZsma677jp3XQIAAAA8lFsL4UWLFl3y+dTU1EJtAwcO1MCBA8spIgDwMEFBsp46pS+//FLxrIQDAC6pVHOEAQAuMpmkatXyl00zmdwdDQB4FAphAAAAeKVKtXwaAMBFubkyjxmj648elW67jS2WAcAFFMIA4MnOn5fP/PlqIMl6/ry7owEAj1ImUyNOnz5dFqcBAAAAKozLhfD06dP14YcfOh4PGjRINWvWVP369fXdd9+VaXAAAABAeXG5EH7jjTcUFRUlKX9Xt5SUFK1YsUK9evXSk08+WeYBAgAAAOXB5TnC6enpjkL4s88+06BBg9SjRw/FxMSoffv2ZR4gAAAAUB5cHhGuUaOGjhw5Ikn64osv1K1bN0mSYRiy2WxlGx0AAABQTlweER4wYICGDBmiRo0a6eTJk+rVq5ckafv27WrYsGGZBwgAAACUB5cL4ZkzZyomJkZHjhzRP/7xDwUHB0uS0tLS9PDDD5d5gACASwgKkvXYMa1cuVLd2GIZAFziciFssVj0xBNPFGofP358mQQEAHCBySTVrq280FC2WAYAF5WoEP7000/Vq1cvWSwWffrpp5fse8cdd5RJYAAAAEB5KlEh3L9/f6Wnp6tOnTrq379/sf1MJhMfmAOAipSbK5+EBLU8dIgtlgHARSUqhO12e5HfAwDc7Px5md94Q7Gq+C2WbTZp3TopLU2KiJDi4iSzuUJDAIArUiZbLBfIzs4uy9MBACqppUulmBipa1dpyJD8f2Ni8tsBwFO4XAjfdtttOnbsWKH2b7/9Vq1bty6LmAAAldjSpdJdd0lHjzq3HzuW304xDMBTuFwIBwQEqGXLlvrwww8l5U+VSExMVFxcnHr37l3mAQIAKg+bTRo3TjKMws8VtCUk5PcDgMrO5eXTPv/8c/3zn//Ufffdp+XLl+vgwYM6dOiQPvvsM/Xo0aM8YgQAVBLr1hUeCb6QYUhHjuT369KlwsICgFJxuRCWpLFjx+ro0aOaPn26fH19lZqaqo4dO5Z1bACASiYtrWz7AYA7uTw14tSpU/rTn/6k2bNna86cORo0aJB69Oih119/vTziAwBUIhERZdsPANzJ5UL4uuuu0/Hjx7V9+3aNGTNG//rXv/T222/rmWeeUZ8+fcojRgBAcQIDZf3vf/XVnDlSYGC5v1xcnBQZWfwmdiaTFBWV3w8AKjuXC+EHH3xQa9euVWxsrKPt7rvv1nfffae8vLwyDQ4AcBk+PlJMjM7VrZv/fTkzm6VZs/K/v7gYLniclMR6wgA8g8vvms8884x8inizjYyMVEpKSpkEBQCovAYMkJYskerXd26PjMxvHzDAPXEBgKtK9WE5KX/zjMOHDxcaBW7ZsuUVBwUAKKG8PPlMmKBm+/dL3bpV2BbLAwZI/fqxsxwAz+ZyIfzrr79q1KhRWrFiRZHP21g8EgAqjtUq88svq5Ekq9VaoS9tNrNEGgDP5vLUiISEBJ0+fVrffvutAgMD9cUXX+i9995To0aN9Omnn5ZHjAAAAECZc3lE+Ouvv9by5cvVrl07+fj4KDo6Wt27d1dISIimTZvGyhEAAADwCC6PCGdlZalOnTqSpBo1aujXX3+VJLVo0ULbtm0r2+gAAACAcuJyIdy4cWPt3r1bktSqVSvNmTNHx44d0xtvvKEIVlAHAACAh3B5asS4ceOU9sfemRMnTlTPnj31wQcfyM/PT/PmzSvr+AAAAIBy4XIhfO+99zq+b9u2rQ4dOqSff/5ZDRo0UK1atco0OAAAAKC8XNE2ROvXr5fZbFabNm0oggHAHQIDZd2+XV+/8kqFbLEMAFXJFRXCvXr10rFjx8oqFgCAq3x8pObNdbZBgwrZYhkAqpIretc0DKOs4gAAAAAqFMMHAODJ8vLkM3myGi9cKF205T0A4NJcLoRHjBihtWvXSpLmzJmjunXrlnlQAIASslplfu45NfnwQ6mCt1gGAE/nciGckZGhbt26qVGjRjpw4IBOnz5dDmEBAAAA5cvlQnjZsmU6duyYHnroIX300UeKiYlRr169tGTJElkZjQAAAICHKNUc4dq1a+uxxx7Td999p2+//VYNGzbUsGHDVK9ePY0fP1579uwp6zgBAACAMnVFH5ZLS0tTSkqKUlJSZDab1bt3b+3cuVPNmjXTzJkzyypGAAAAoMy5XAhbrVZ9/PHH6tu3r6Kjo7V48WIlJCTol19+0XvvvaeVK1fqo48+0uTJk1067wsvvCCTyaSEhIRi+8ybN08mk8npKyAgwNVLAAAAAFzfYjkiIkJ2u12DBw/Wf/7zH7Vu3bpQn65duyosLKzE59y8ebPmzJmjli1bXrZvSEiIdu/e7XhsMplK/DoAAABAAZcL4ZkzZ2rgwIGXHIkNCwvTgQMHSnS+zMxMDR06VG+++aaee+65y/Y3mUwKDw8vcbwAUFnZbNK6dVJamhQRIcXFSWaziycJCND5DRu0fv16deQvZADgEpcL4WHDhpVpAGPHjlWfPn3UrVu3EhXCmZmZio6Olt1uV5s2bTR16lQ1b9682P65ubnKzc11PD5z5oyk/CkerHJRcgW5ImclR85Kx1vy9u9/S089JV24S339+tL06dLtt7t2LmurVjp94oSsdjtrCbvAW+61skTOSoe8ua6icmUy3LhP8qJFi/T8889r8+bNCggIUJcuXdS6dWslJSUV2X/jxo3as2ePWrZsqYyMDM2YMUNr167Vrl27FBkZWeQxiYmJmjRpUqH2BQsWKCgoqCwvBwAAAGUgOztbQ4YMUUZGhkJCQsrtddxWCB85ckTt2rVTSkqKY27w5Qrhi1mtVjVt2lSDBw/WlClTiuxT1IhwVFSU0tLSVLNmzSu+Dm9htVqVkpKi7t27y2KxuDscj0DOSqeq581mk1q0cB4JvpDJlD8y/P33JZwmkZcnIylJe/bsUWxSkizVqpVpvFVZVb/XygM5Kx3y5rqTJ08qIiKi3Athl6dGlJWtW7fqxIkTatOmjaPNZrNp7dq1eu2115SbmyvzZf4rYLFYdP3112vv3r3F9vH395e/v3+Rx3Izuo68uY6clU5Vzdv69dIl3rIkSXv2SJs2SV26lOCEeXnS00+ruSRrUlKVzFl5q6r3WnkiZ6VD3kquovLktkL4tttu086dO53aRo0apSZNmuipp566bBEs5RfOO3fuVO/evcsrTAAoU2lpZdsPAFB6biuEq1evruuuu86prVq1aqpZs6ajffjw4apfv76mTZsmSZo8ebJuuukmNWzYUKdPn9aLL76oQ4cOafTo0RUePwCURkRE2fYDAJSe2wrhkjh8+LB8fP6358epU6c0ZswYpaenq0aNGmrbtq02bNigZs2auTFKACi5uDgpMjJ/jnBRn9AwmfKfj4ur+NgAwNtUqkI4NTX1ko9nzpzJ1s0APEpRawXPmiXddVd+0XthMVywP1BSUinWEwYAuMzlLZYBACWzdKkUEyN17SoNGZL/b0xM/nNLluSvDnGhyMj89gEDKjpSAPBOlWpEGACqiqVL80d9L57+cOxYfvuSJdLBg2WwsxwAoNQohAGgjNls0rhxRc8BNoz8KRAJCVK/fiVcIu1SAgJ0PiVFmzZtUnu2WAYAlzA1AgDK2Lp10tGjxT9vGNKRI/n9rpjZLKNzZ51s0YLhZABwEYUwAJQx1goGAM9AIQwAZaxC1wq2WuUze7Zik5Mlq7UMTggA3oNCGADKWMFawQXLoV3MZJKiosporeC8PJnHjVPLuXPzt1sGAJQYhTAAlDGzOX+tYKlwMcxawQBQeVAIA0A5GDCAtYIBoLJj+TQAKCcDBuQvkcZawQBQOVEIA0A5MpvLYK1gAEC5YGoEAAAAvBKFMAAAALwSUyMAwJP5++v8smXasmWL2vr7uzsaAPAoFMIA4Ml8fWX07q3jf3wPACg53jUBALLZWN0CgPdhjjAAeDKrVab331fUqlWl3mJ56VIpJkbq2lUaMiT/35iY/HYAqMoohAHAk+XlyXf0aLV59dVSbbG8dKl0113S0aPO7ceO5bdTDAOoyiiEAcBL2WzSuHGSYRR+rqAtISG/HwBURRTCAOCl1q0rPBJ8IcOQjhzJ7wcAVRGFMAB4qbS0su0HAJ6GQhgAvFRERNn2AwBPQyEMAF4qLk6KjJRMpqKfN5mkqKj8fgBQFVEIA4CXMpulWbPyv7+4GC54nJTEesIAqi4KYQDwZP7+Or9ggTY/+aRUii2WBwyQliyR6td3bo+MzG8fMKCM4gSASoid5QDAk/n6yrjrLv0SFKTWpdxiecAAqV8/dpYD4H0ohAEAMpulLl3cHQUAVCymRgCAJzt/XqYlS1Rv/Xrp/Hl3RwMAHoVCGAA8WW6ufIcM0Q0vvijl5ro7GgDwKBTCAAAA8EoUwgAAAPBKFMIAAADwShTCAAAA8EoUwgAAAPBKFMIAAADwSmyoAQCezM9P5996S99/951a+Pm5OxoA8CiMCAOAJ7NYZAwfriO33SZZLO6OBgA8CoUwAAAAvBKFMAB4svPnZUpOVt0tW9hiGQBcxBxhAPBkubny7d9fN0myPv64FBjo7ogAwGMwIgwAAACvVGkK4RdeeEEmk0kJCQmX7Ld48WI1adJEAQEBatGihZKTkysmQAAAAFQplaIQ3rx5s+bMmaOWLVtest+GDRs0ePBg3X///dq+fbv69++v/v3764cffqigSAEAAFBVuL0QzszM1NChQ/Xmm2+qRo0al+w7a9Ys9ezZU08++aSaNm2qKVOmqE2bNnrttdcqKFoAAABUFW7/sNzYsWPVp08fdevWTc8999wl+27cuFGPPfaYU1t8fLyWLVtW7DG5ubnKzc11PD5z5owkyWq1ymq1lj5wL1OQK3JWcuSsdMibi6xWWRzfWiXyVmLca64jZ6VD3lxXUblyayG8aNEibdu2TZs3by5R//T0dNWtW9eprW7dukpPTy/2mGnTpmnSpEmF2levXq2goCDXAoZSUlLcHYLHIWelQ95KxpyTo75/fP/111/LFhDg1ng8Efea68hZ6ZC3ksvOzq6Q13FbIXzkyBGNGzdOKSkpCijHN+4JEyY4jSKfOXNGUVFR6tq1q2rWrFlur1vVWK1WpaSkqHv37rKwe1WJkLPSIW8uslqV9/LL+vnnn3Vrz56y8D/4Jca95jpyVjrkzXUnT56skNdxWyG8detWnThxQm3atHG02Ww2rV27Vq+99ppyc3NlNpudjgkPD9fx48ed2o4fP67w8PBiX8ff31/+/v6F2i0WCzdjKZA315Gz0vH2vNls0rp1UlqaFBEhxcVJF70l5rNYZH3kER1ITlbToCCvzllpefu9VhrkrHTIW8lVVJ7c9mG52267TTt37tSOHTscX+3atdPQoUO1Y8eOQkWwJHXo0EGrVq1yaktJSVGHDh0qKmwAKHdLl0oxMVLXrtKQIfn/xsTktwMAyo7bRoSrV6+u6667zqmtWrVqqlmzpqN9+PDhql+/vqZNmyZJGjdunDp37qyXXnpJffr00aJFi7RlyxbNnTu3wuMHgPKwdKl0112SYTi3HzuW375kiTRgwAVP2GwyrVmjmjt3SvHxEqNNAFBibl8+7VIOHz6stLQ0x+OOHTtqwYIFmjt3rlq1aqUlS5Zo2bJlhQpqAPBENps0blzhIlj6X1tCQn4/h5wc+XbvrlueeUbKyamIMAGgynD78mkXSk1NveRjSRo4cKAGDhxYMQEBQAVat046erT45w1DOnIkv1+XLhUWFgBUWZV6RBgAvMkFfwArk34AgEujEAaASiIiomz7AQAujUIYACqJuDgpMlIymYp+3mSSoqLy+wEArhyFMABUEmazNGtW/vcXF8MFj5OSillPGADgMgphAKhEBgzIXyKtfn3n9sjIIpZOAwBckUq1agQAIL/Y7dev5DvL2aZN088//6xrWUMYAFxCIQwAlZDZXMIl0vz8ZH/8ce1NTta1fn7lHRYAVClMjQAAAIBXohAGAE9ms8m0ZYvC9uy5aMs5AMDlMDUCADxZTo58O3ZUZ0nW0aOlgAB3RwQAHoMRYQAAAHglCmEAAAB4JQphAAAAeCUKYQAAAHglCmEAAAB4JQphAAAAeCWWTwMAT2axyPb009qzZ4+uYYtlAHAJI8IA4Mn8/GR/9lntHjxYYotlAHAJhTAAAAC8EoUwAHgyu13atUvVDx/O/x4AUGLMEQYAT3bunCzXX69bJVmHDZP8/d0dEQB4DEaEAQAA4JUohAEAAOCVKIQBAADglSiEAQAA4JUohAEAAOCVKIQBAADglVg+DQA8mcUi22OPaf/+/Yphi2UAcAmFMAB4Mj8/2V94QT8mJyuGLZYBwCVMjQAAAIBXohAGAE9mt0sHDyrw+HG2WAYAFzE1AgA82blzslx7rXpIsg4axBbLAOACRoQBAADglSiEAQAA4JUohAEAAOCVKIQBAADglSiEAQAA4JUohAEAAOCVWD4NADyZr69sDz6ow4cOKdKXt3QAcAXvmgDgyfz9ZX/lFX2fnKxI1hAGAJcwNQIAAABeya2F8OzZs9WyZUuFhIQoJCREHTp00IoVK4rtP2/ePJlMJqevgICACowYACoZw5B+/VV+GRn53wMASsytUyMiIyP1wgsvqFGjRjIMQ++995769eun7du3q3nz5kUeExISot27dzsem0ymigoXACqf7GxZ6tdXL0nWO+6Q/PzcHREAeAy3FsK333670+Pnn39es2fP1qZNm4othE0mk8LDwysiPAAAAFRhlebDcjabTYsXL1ZWVpY6dOhQbL/MzExFR0fLbrerTZs2mjp1arFFsyTl5uYqNzfX8fjMmTOSJKvVKqvVWnYXUMUV5IqclRw5Kx3y5iKrVRbHt1aJvJUY95rryFnpkDfXVVSuTIbh3kllO3fuVIcOHZSTk6Pg4GAtWLBAvXv3LrLvxo0btWfPHrVs2VIZGRmaMWOG1q5dq127dikyMrLIYxITEzVp0qRC7QsWLFBQUFCZXgsAVDRzTo763nOPJOmzRYtk43MTAKqA7OxsDRkyRBkZGQoJCSm313F7IZyXl6fDhw8rIyNDS5Ys0VtvvaU1a9aoWbNmlz3WarWqadOmGjx4sKZMmVJkn6JGhKOiopSWlqaaNWuW2XVUdVarVSkpKerevbssFsvlDwA5KyXy5qKsLFlq1JAkZZ84IUtYmHvj8SDca64jZ6VD3lx38uRJRURElHsh7PapEX5+fmrYsKEkqW3bttq8ebNmzZqlOXPmXPZYi8Wi66+/Xnv37i22j7+/v/yLWFvTYrFwM5YCeXMdOSsd8lZCF+SInJUOeXMdOSsd8lZyFZWnSreOsN1udxrBvRSbzaadO3cqIiKinKMCAABAVePWEeEJEyaoV69eatCggc6ePasFCxYoNTVVX375pSRp+PDhql+/vqZNmyZJmjx5sm666SY1bNhQp0+f1osvvqhDhw5p9OjR7rwMAHAfX1/Zhw3T0aNHFcEWywDgEre+a544cULDhw9XWlqaQkND1bJlS3355Zfq3r27JOnw4cPy8fnfoPWpU6c0ZswYpaenq0aNGmrbtq02bNhQovnEAFAl+fvL9vbb2p6crAi2WAYAl7i1EH777bcv+XxqaqrT45kzZ2rmzJnlGBEAAAC8RaWbIwwAcIFhSFlZMufksMUyALiICWUA4Mmys2WpUUN9JVlPnWKLZQBwASPCAAAA8EoUwgAAAPBKFMIAAADwShTCAAAA8EoUwgAAAPBKFMIAAADwSiyfBgCezGyWfcAApaWnq47Z7O5oAMCjUAgDgCcLCJBt0SJtSU5W74AAd0cDAB6FqREAAADwShTCAAAA8EpMjQAAT5aVJUtwsPrpjy2Ww8LcHREAeAxGhAEAAOCVKIQBAADglSiEAQAA4JUohAEAAOCVKIQBAADglSiEAQAA4JVYPg0APJnZLHuvXjpx4oRqssUyALiEQhgAPFlAgGzLl+tbtlgGAJcxNQIAAABeiUIYAAAAXompEQDgybKy5FunjvrYbDLS09liGQBcQCEMAB7OlJ0tX0lWdwcCAB6GqREAAADwShTCAAAA8EoUwgAAAPBKFMIAAADwShTCAAAA8EqsGgEAnszHR/ZOnfT7yZMK9WFsAwBcQSEMAJ4sMFC2lSu1PjlZvQMD3R0NAHgUhg8AAADglSiEAQAA4JWYGgEAniwrS74xMeqZlycdOsQWywDgAgphAPBwpt9+k7/YYhkAXMXUCAAAAHglCmEAAAB4JQphAAAAeCUKYQAAAHglCmEAAAB4JbcWwrNnz1bLli0VEhKikJAQdejQQStWrLjkMYsXL1aTJk0UEBCgFi1aKDk5uYKiBYBKyMdH9rZtdaphQ4ktlgHAJW5914yMjNQLL7ygrVu3asuWLbr11lvVr18/7dq1q8j+GzZs0ODBg3X//fdr+/bt6t+/v/r3768ffvihgiMHgEoiMFC2jRu1dsYMiS2WAcAlbl1H+Pbbb3d6/Pzzz2v27NnatGmTmjdvXqj/rFmz1LNnTz355JOSpClTpiglJUWvvfaa3njjjSJfIzc3V7m5uY7HZ86ckSRZrVZZray6WVIFuSJnJUfOSoe8uY6clQ55cx05Kx3y5rqKypXJMAyjQl7pMmw2mxYvXqwRI0Zo+/btatasWaE+DRo00GOPPaaEhARH28SJE7Vs2TJ99913RZ43MTFRkyZNKtS+YMECBQUFlVn8AAAAKBvZ2dkaMmSIMjIyFBISUm6v4/ad5Xbu3KkOHTooJydHwcHB+uSTT4osgiUpPT1ddevWdWqrW7eu0tPTiz3/hAkT9NhjjzkenzlzRlFRUeratatq1qxZNhfhBaxWq1JSUtS9e3dZLBZ3h+MRyFnpkDcXZWfL3LKlcs6dk378UZbQUHdH5DG411xHzkqHvLnu5MmTFfI6bi+EGzdurB07digjI0NLlizRiBEjtGbNmmKLYVf5+/vL39+/ULvFYuFmLAXy5jpyVjrkrYR8faXDhxUkyerrS85KgXvNdeSsdMhbyVVUntxeCPv5+alhw4aSpLZt22rz5s2aNWuW5syZU6hveHi4jh8/7tR2/PhxhYeHV0isAAAAqDoq3Vo7drvd6cNtF+rQoYNWrVrl1JaSkqIOHTpURGgAAACoQtw6IjxhwgT16tVLDRo00NmzZ7VgwQKlpqbqyy+/lCQNHz5c9evX17Rp0yRJ48aNU+fOnfXSSy+pT58+WrRokbZs2aK5c+e68zIAAADggdxaCJ84cULDhw9XWlqaQkND1bJlS3355Zfq3r27JOnw4cPyuWCB+I4dO2rBggV6+umn9be//U2NGjXSsmXLdN1117nrEgAAAOCh3FoIv/3225d8PjU1tVDbwIEDNXDgwHKKCAAAAN7C7R+WAwBcAZNJRtOmOpuZqUCTyd3RAIBHqXQflgMAuCAoSOe/+06rX31VYpMgAHAJhTAAAAC8EoUwAAAAvBJzhAHAk2Vny7ddO3XNzJS6dJHYYhkASoxCGAA8mWHI9NNPCpFkNQx3RwMAHoWpEQAAAPBKFMIAAADwShTCAAAA8EoUwgAAAPBKFMIAAADwSqwaAQCezGSSER2tc9nZsrDFMgC4hBFhAPBkQUE6v2ePUt58ky2WAcBFFMIAAADwShTCAAAA8ErMEQYAT3bunMxxceqUkSF17SpZLO6OCAA8BoUwAHgyu10+W7eqhiSr3e7uaADAozA1AgAAAF6JQhgAAABeiakRAFCF2GzSunVSWpoUESHFxUlms7ujAoDKiUIYAKqI5GTpkaeko0f/1xYZKc2aJQ0Y4L64AKCyYmoEAFQRo0c7F8GSdOyYdNdd0tKl7okJACozCmEA8HBGrVrKDQmRYRTx3B9tCQn50yYAAP9DIQwAnqxaNaV+9Iu+eP99ZZuqFdnFMKQjR/LnDgMA/odCGAA8XHp6yfqlpZVvHADgaSiEAcDDhYeXrF9ERPnGAQCehlUjAMCTnTunzhN76vffTypQXXVOhbdYNpnyV4+Ii3NDfABQiVEIA4Ans9vls26taknyCbTLZJLTh+ZMpvx/k5JYTxgALsbUCACoIt56S6pf37ktMlJasoR1hAGgKIwIA0AV0bu3dPBudpYDgJKiEAaAKsRslrp0cXcUAOAZmBoBAAAAr0QhDAAAAK/E1AgA8HBGUJBs7J8MAC5jRBgAPFm1ajp/+rQ+//BDqVrRWywDAIpGIQwAAACvRCEMAAAAr8QcYQDwZDk5Mg8YoPYnTki33ipZCm+xDAAoGoUwAHgym00+K1YoXJKVD8wBgEuYGgEAAACv5NZCeNq0abrhhhtUvXp11alTR/3799fu3bsvecy8efNkMpmcvgICAiooYgAAAFQVbi2E16xZo7Fjx2rTpk1KSUmR1WpVjx49lJWVdcnjQkJClJaW5vg6dOhQBUUMAACAqsKtc4S/+OILp8fz5s1TnTp1tHXrVnXq1KnY40wmk8LDw8s7PAAAAFRhlerDchkZGZKkq6666pL9MjMzFR0dLbvdrjZt2mjq1Klq3rx5kX1zc3OVm5vreHzmzBlJktVqldVqLaPIq76CXJGzkiNnpUPeXGS1yuL41iqRtxLjXnMdOSsd8ua6isqVyTAMo0Je6TLsdrvuuOMOnT59Wt98802x/TZu3Kg9e/aoZcuWysjI0IwZM7R27Vrt2rVLkZGRhfonJiZq0qRJhdrfeustBQUFlek1AEBFM+fkqOd990mSvnjnHdn4zASAKiA7O1ujR4/W6dOnFRoaWm6vU2kK4YceekgrVqzQN998U2RBWxyr1aqmTZtq8ODBmjJlSqHnLx4RPnDggFq3bl0WIQMAAKAc7du3T1dffXW5nb9STI145JFH9Nlnn2nt2rUuFcGSZLFYdP3112vv3r1FPu/v7y9/f3/H4+joaEnS4cOHy/X/MKqaM2fOKCoqSkeOHFFISIi7w/EI5Kx0yJvryFnpkDfXkbPSIW+uy8jIUIMGDS47XfZKubUQNgxDjz76qD755BOlpqYqNjbW5XPYbDbt3LlTvXv3LlF/H5/8hTJCQ0O5GUshJCSEvLmInJUOeXMdOSsd8uY6clY65M11BXVbeXFrITx27FgtWLBAy5cvV/Xq1ZWeni4pv0gNDAyUJA0fPlz169fXtGnTJEmTJ0/WTTfdpIYNG+r06dN68cUXdejQIY0ePdpt1wEAAADP49ZCePbs2ZKkLl26OLW/++67GjlypKT8KQwX/t/AqVOnNGbMGKWnp6tGjRpq27atNmzYoGbNmlVU2AAAAKgC3D414nJSU1OdHs+cOVMzZ84s9Wv6+/tr4sSJTvOGcXnkzXXkrHTIm+vIWemQN9eRs9Ihb66rqJxVmlUjAAAAgIrk1i2WAQAAAHehEAYAAIBXohAGAACAV6IQBgAAgFeqEoXwP//5T8XExCggIEDt27fXf/7zn0v2X7x4sZo0aaKAgAC1aNFCycnJTs8bhqFnn31WERERCgwMVLdu3bRnz57yvIQK50rO3nzzTcXFxalGjRqqUaOGunXrVqj/yJEjZTKZnL569uxZ3pdR4VzJ27x58wrlJCAgwKkP95qzLl26FMqZyWRSnz59HH2q+r22du1a3X777apXr55MJpOWLVt22WNSU1PVpk0b+fv7q2HDhpo3b16hPq6+T3oaV/O2dOlSde/eXbVr11ZISIg6dOigL7/80qlPYmJioXutSZMm5XgVFcvVnKWmphb5+1mwB0AB7jVnRb1nmUwmNW/e3NGnqt9r06ZN0w033KDq1aurTp066t+/v3bv3n3Z4yqiXvP4QvjDDz/UY489pokTJ2rbtm1q1aqV4uPjdeLEiSL7b9iwQYMHD9b999+v7du3q3///urfv79++OEHR59//OMfeuWVV/TGG2/o22+/VbVq1RQfH6+cnJyKuqxy5WrOUlNTNXjwYK1evVobN25UVFSUevTooWPHjjn169mzp9LS0hxfCxcurIjLqTCu5k3K30XowpwcOnTI6XnuNWdLly51ytcPP/wgs9msgQMHOvWryvdaVlaWWrVqpX/+858l6n/gwAH16dNHXbt21Y4dO5SQkKDRo0c7FXWluXc9jat5W7t2rbp3767k5GRt3bpVXbt21e23367t27c79WvevLnTvfbNN9+UR/hu4WrOCuzevdspJ3Xq1HE8x71W2KxZs5zydeTIEV111VWF3teq8r22Zs0ajR07Vps2bVJKSoqsVqt69OihrKysYo+psHrN8HA33nijMXbsWMdjm81m1KtXz5g2bVqR/QcNGmT06dPHqa19+/bG//3f/xmGYRh2u90IDw83XnzxRcfzp0+fNvz9/Y2FCxeWwxVUPFdzdrHz588b1atXN9577z1H24gRI4x+/fqVdaiViqt5e/fdd43Q0NBiz8e9dnkzZ840qlevbmRmZjravOFeKyDJ+OSTTy7Z5y9/+YvRvHlzp7a7777biI+Pdzy+0p+DpylJ3orSrFkzY9KkSY7HEydONFq1alV2gVViJcnZ6tWrDUnGqVOniu3DvXZ5n3zyiWEymYyDBw862rzpXjMMwzhx4oQhyVizZk2xfSqqXvPoEeG8vDxt3bpV3bp1c7T5+PioW7du2rhxY5HHbNy40am/JMXHxzv6HzhwQOnp6U59QkND1b59+2LP6UlKk7OLZWdny2q16qqrrnJqT01NVZ06ddS4cWM99NBDOnnyZJnG7k6lzVtmZqaio6MVFRWlfv36adeuXY7nuNcu7+2339Y999yjatWqObVX5XvNVZd7TyuLn4M3sNvtOnv2bKH3tT179qhevXq6+uqrNXToUB0+fNhNEVYerVu3VkREhLp3767169c72rnXSubtt99Wt27dFB0d7dTuTfdaRkaGJBX6fbtQRdVrHl0I//bbb7LZbKpbt65Te926dQvNWSqQnp5+yf4F/7pyTk9Smpxd7KmnnlK9evWcbr6ePXvq/fff16pVqzR9+nStWbNGvXr1ks1mK9P43aU0eWvcuLHeeecdLV++XP/6179kt9vVsWNHHT16VBL32uX85z//0Q8//KDRo0c7tVf1e81Vxb2nnTlzRufOnSuT33lvMGPGDGVmZmrQoEGOtvbt22vevHn64osvNHv2bB04cEBxcXE6e/asGyN1n4iICL3xxhv6+OOP9fHHHysqKkpdunTRtm3bJJXNf1+qul9++UUrVqwo9L7mTfea3W5XQkKCbr75Zl133XXF9quoes2tWyzD87zwwgtatGiRUlNTnT74dc899zi+b9GihVq2bKlrrrlGqampuu2229wRqtt16NBBHTp0cDzu2LGjmjZtqjlz5mjKlClujMwzvP3222rRooVuvPFGp3buNZS1BQsWaNKkSVq+fLnTfNdevXo5vm/ZsqXat2+v6OhoffTRR7r//vvdEapbNW7cWI0bN3Y87tixo/bt26eZM2dq/vz5bozMc7z33nsKCwtT//79ndq96V4bO3asfvjhh0ozB9qjR4Rr1aols9ms48ePO7UfP35c4eHhRR4THh5+yf4F/7pyTk9SmpwVmDFjhl544QV99dVXatmy5SX7Xn311apVq5b27t17xTFXBleStwIWi0XXX3+9Iyfca8XLysrSokWLSvQfgKp2r7mquPe0kJAQBQYGlsm9W5UtWrRIo0eP1kcffVToz7AXCwsL07XXXuu191pRbrzxRkc+uNcuzTAMvfPOOxo2bJj8/Pwu2beq3muPPPKIPvvsM61evVqRkZGX7FtR9ZpHF8J+fn5q27atVq1a5Wiz2+1atWqV00jchTp06ODUX5JSUlIc/WNjYxUeHu7U58yZM/r222+LPacnKU3OpPxPZk6ZMkVffPGF2rVrd9nXOXr0qE6ePKmIiIgyidvdSpu3C9lsNu3cudORE+614i1evFi5ubm69957L/s6Ve1ec9Xl3tPK4t6tqhYuXKhRo0Zp4cKFTkv0FSczM1P79u3z2nutKDt27HDkg3vt0tasWaO9e/eW6H/wq9q9ZhiGHnnkEX3yySf6+uuvFRsbe9ljKqxec+ljfpXQokWLDH9/f2PevHnGjz/+aDzwwANGWFiYkZ6ebhiGYQwbNsz461//6ui/fv16w9fX15gxY4bx008/GRMnTjQsFouxc+dOR58XXnjBCAsLM5YvX258//33Rr9+/YzY2Fjj3LlzFX595cHVnL3wwguGn5+fsWTJEiMtLc3xdfbsWcMwDOPs2bPGE088YWzcuNE4cOCAsXLlSqNNmzZGo0aNjJycHLdcY3lwNW+TJk0yvvzyS2Pfvn3G1q1bjXvuuccICAgwdu3a5ejDveacswK33HKLcffddxdq94Z77ezZs8b27duN7du3G5KMl19+2di+fbtx6NAhwzAM469//asxbNgwR//9+/cbQUFBxpNPPmn89NNPxj//+U/DbDYbX3zxhaPP5X4OVYGrefvggw8MX19f45///KfT+9rp06cdfR5//HEjNTXVOHDggLF+/XqjW7duRq1atYwTJ05U+PWVB1dzNnPmTGPZsmXGnj17jJ07dxrjxo0zfHx8jJUrVzr6cK8VzluBe++912jfvn2R56zq99pDDz1khIaGGqmpqU6/b9nZ2Y4+7qrXPL4QNgzDePXVV40GDRoYfn5+xo033mhs2rTJ8Vznzp2NESNGOPX/6KOPjGuvvdbw8/Mzmjdvbnz++edOz9vtduOZZ54x6tata/j7+xu33XabsXv37oq4lArjSs6io6MNSYW+Jk6caBiGYWRnZxs9evQwateubVgsFiM6OtoYM2ZMlXrjK+BK3hISEhx969ata/Tu3dvYtm2b0/m41wr/fv7888+GJOOrr74qdC5vuNcKlqi6+KsgTyNGjDA6d+5c6JjWrVsbfn5+xtVXX228++67hc57qZ9DVeBq3jp37nzJ/oaRvwxdRESE4efnZ9SvX9+4++67jb1791bshZUjV3M2ffp045prrjECAgKMq666yujSpYvx9ddfFzov91rh39HTp08bgYGBxty5c4s8Z1W/14rKlySn9yp31WumPwIEAAAAvIpHzxEGAAAASotCGAAAAF6JQhgAAABeiUIYAAAAXolCGAAAAF6JQhgAAABeiUIYAAAAXolCGAAAAF6JQhgAvEiXLl2UkJDg7jAAoFJgZzkA8CK///67LBaLqlev7u5QAMDtKIQBAADglZgaAQBu8Ouvvyo8PFxTp051tG3YsEF+fn5atWpVkcds3rxZ3bt3V61atRQaGqrOnTtr27ZtjudTU1Pl5+endevWOdr+8Y9/qE6dOjp+/LikwlMjXn/9dTVq1EgBAQGqW7eu7rrrrjK+UgCovCiEAcANateurXfeeUeJiYnasmWLzp49q2HDhumRRx7RbbfdVuQxZ8+e1YgRI/TNN99o06ZNatSokXr37q2zZ89K+l+RO2zYMGVkZGj79u165pln9NZbb6lu3bqFzrdlyxb9+c9/1uTJk7V792598cUX6tSpU7leNwBUJkyNAAA3Gjt2rFauXKl27dpp586d2rx5s/z9/Ut0rN1uV1hYmBYsWKC+fftKkvLy8tS+fXtde+21+uGHH3TzzTdr7ty5jmO6dOmi1q1bKykpSUuXLtWoUaN09OhR5gwD8EqMCAOAG82YMUPnz5/X4sWL9cEHH8jf31+HDx9WcHCw46tg+sTx48c1ZswYNWrUSKGhoQoJCVFmZqYOHz7sOJ+fn58++OADffzxx8rJydHMmTOLfe3u3bsrOjpaV199tYYNG6YPPvhA2dnZ5X7NAFBZ+Lo7AADwZvv27dMvv/wiu92ugwcPqkWLFqpXr5527Njh6HPVVVdJkkaMGKGTJ09q1qxZio6Olr+/vzp06KC8vDync27YsEFS/goRv//+u6pVq1bka1evXl3btm1TamqqvvrqKz377LNKTEzU5s2bFRYWVi7XCwCVCVMjAMBN8vLydOONN6p169Zq3LixkpKStHPnTtWpU6fI/tWrV9frr7+uYcOGSZKOHDmiBg0aaObMmY4PwO3bt0+tW7fWK6+8og8//FB5eXlauXKlfHzy/wB44dSIi2VlZSksLEwffvihBgwYUC7XDACVCSPCAOAmf//735WRkaFXXnlFwcHBSk5O1n333afPPvusyP6NGjXS/Pnz1a5dO505c0ZPPvmkAgMDHc/bbDbde++9io+P16hRo9SzZ0+1aNFCL730kp588slC5/vss8+0f/9+derUSTVq1FBycrLsdrsaN25cbtcMAJUJc4QBwA1SU1OVlJSk+fPnKyQkRD4+Ppo/f77WrVun2bNnF3nM22+/rVOnTqlNmzYaNmyY/vznPzuNHj///PM6dOiQ5syZI0mKiIjQ3Llz9fTTT+u7774rdL6wsDAtXbpUt956q5o2bao33nhDCxcuVPPmzcvnogGgkmFqBAAAALwSI8IAAADwShTCAAAA8EoUwgAAAPBKFMIAAADwShTCAAAA8EoUwgAAAPBKFMIAAADwShTCAAAA8EoUwgAAAPBKFMIAAADwShTCAAAA8Er/D/e0Gq2sLBzxAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# This code creates an image of interest. The code is not worth studying, just running.\n", "x = np.linspace(0.9, 1.1, 10)\n", "\n", "# Create the plot\n", "plt.figure(figsize=(8, 6))\n", "plt.scatter(x, y, color='blue', label='Data Points')\n", "plt.axvline(x=1, color='red', linestyle='--', label='x = 1')\n", "plt.xlim(0, 2)\n", "\n", "# Adding annotations and labels for clarity\n", "plt.title(\"Data Points Near x = 1 with Noisy Labels\")\n", "plt.xlabel(\"x-axis\")\n", "plt.ylabel(\"y-axis\")\n", "plt.legend()\n", "plt.grid(True)\n", "\n", "# Show the plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Imagine that the blue points are just some of the nearby points, and that other points span the x-axis from -100 to 100. What should we do in this case? There is no tie, but there are many points with x-values close to $1.0$ (the query). \n", "\n", "## k-Nearest Neighbors\n", "\n", "**Idea**: Average the labels of the $k$ nearest points, where $k$ is an integer hyperparameter.\n", "\n", "Note: A **hyperparameter** of an ML algorithm is a variable, like $k$, that changes the behavior of the algorithm, and which is often set by the data scientist applying the algorithm.\n", "\n", "This updated algorithm is called **k-Nearest Neighbor** and has the following pseudocode:\n", "\n", "1. Find the $k$ inputs closest to the query.\n", "2. Return the average of the labels for these $k$ closest inputs." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "class KNearestNeighbors(BaseEstimator):\n", " # Add a constructor that stores the value of k (a hyperparameter)\n", " def __init__(self, k=3):\n", " self.k = k\n", "\n", " def fit(self, X, y):\n", " # Convert X and y to NumPy arrays if they are DataFrames\n", " if isinstance(X, pd.DataFrame):\n", " X = X.values\n", " if isinstance(y, pd.Series):\n", " y = y.values\n", "\n", " # Store the training data and labels\n", " self.X_data = X\n", " self.y_data = y\n", " \n", " # Create a KDTree for efficient nearest neighbor search\n", " self.tree = KDTree(X)\n", "\n", " return self\n", "\n", " def predict(self, X):\n", " # Convert X to a NumPy array if it's a DataFrame\n", " if isinstance(X, pd.DataFrame):\n", " X = X.values\n", "\n", " # Query the tree for the k nearest neighbors for all points in X\n", " dist, ind = self.tree.query(X, k=self.k)\n", "\n", " # Return the average label for the nearest neighbors of each query\n", " return np.mean(self.y_data[ind], axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's compare the performance of k-NN to NN using the matrics that we discussed earlier:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def mean_squared_error(predictions, labels):\n", " return np.mean((predictions - labels) ** 2)\n", "\n", "def root_mean_squared_error(predictions, labels):\n", " return np.sqrt(mean_squared_error(predictions, labels))\n", "\n", "def mean_absolute_error(predictions, labels):\n", " return np.mean(np.abs(predictions - labels))\n", "\n", "def r_squared(predictions, labels):\n", " ss_res = np.sum((labels - predictions) ** 2) # ss_res is the \"Sum of Squares of Residuals\"\n", " ss_tot = np.sum((labels - np.mean(labels)) ** 2) # ss_tot is the \"Total Sum of Squares\"\n", " return 1 - (ss_res / ss_tot)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "# Load the data set\n", "df = pd.read_csv(\"data/GPA.csv\", delimiter=',')\n", "\n", "# We already loaded X and y, but do it again as a reminder\n", "X = df.iloc[:, :-1]\n", "y = df.iloc[:, -1]\n", "\n", "# Split the data into training and testing sets (60% train, 40% test)\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, shuffle=True)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
kMSERMSEMAER^2
011.1520841.0733520.823743-0.687769
120.8534300.9238130.713553-0.250249
230.7644680.8743390.678162-0.119923
350.6883300.8296570.644951-0.008384
4100.6310010.7943560.6202370.075602
51000.5794040.7611860.5969190.151190
610000.5816760.7626770.6002270.147861
750000.6005440.7749470.6166700.120221
\n", "
" ], "text/plain": [ " k MSE RMSE MAE R^2\n", "0 1 1.152084 1.073352 0.823743 -0.687769\n", "1 2 0.853430 0.923813 0.713553 -0.250249\n", "2 3 0.764468 0.874339 0.678162 -0.119923\n", "3 5 0.688330 0.829657 0.644951 -0.008384\n", "4 10 0.631001 0.794356 0.620237 0.075602\n", "5 100 0.579404 0.761186 0.596919 0.151190\n", "6 1000 0.581676 0.762677 0.600227 0.147861\n", "7 5000 0.600544 0.774947 0.616670 0.120221" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# List of values of k to test\n", "k_values = [1, 2, 3, 5, 10, 100, 1000, 5000]\n", "\n", "# List to store the results. This will be a list of dictionaries\n", "results_list = []\n", "\n", "# Evaluate NN and k-NN models\n", "for k in k_values:\n", " model = KNearestNeighbors(k=k)\n", " model.fit(X_train, y_train)\n", " predictions = model.predict(X_test)\n", "\n", " mse = mean_squared_error(predictions, y_test)\n", " rmse = root_mean_squared_error(predictions, y_test)\n", " mae = mean_absolute_error(predictions, y_test)\n", " r2 = r_squared(predictions, y_test)\n", "\n", " # Create a dictionary with the relevant variables from this value of k, and add it to results_list.\n", " results_list.append({'k': k, 'MSE': mse, 'RMSE': rmse, 'MAE': mae, 'R^2': r2})\n", "\n", "# Create DataFrame from the list of results. Each dictionary in the list becomes a row in the DataFrame and the keys of the dictionaries become the column headers.\n", "results = pd.DataFrame(results_list)\n", "\n", "# Print the results\n", "display(results)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make this easier on the eyes, let's highlight the minimum values in bold. The below requires the `jinja2` library:\n", "> pip install jinja2" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 kMSERMSEMAER^2
011.1520841.0733520.823743-0.687769
120.8534300.9238130.713553-0.250249
230.7644680.8743390.678162-0.119923
350.6883300.8296570.644951-0.008384
4100.6310010.7943560.6202370.075602
51000.5794040.7611860.5969190.151190
610000.5816760.7626770.6002270.147861
750000.6005440.7749470.6166700.120221
\n" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Function to apply bold style to the minimum value in each column, except for R^2 where we highlight the maximum\n", "def highlight_extreme(s):\n", " if s.name == 'R^2':\n", " is_extreme = s == s.max()\n", " else:\n", " is_extreme = s == s.min()\n", " return ['font-weight: bold' if v else '' for v in is_extreme]\n", "\n", "# Apply the styling\n", "styled_results = results.style.apply(highlight_extreme, subset=['MSE', 'RMSE', 'MAE', 'R^2'])\n", "\n", "# Display the styled DataFrame\n", "styled_results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Weighted k-Nearest Neighbors\n", "\n", "What if, when running k-NN some of the k-nearest points are very close to the query point and others are actually quite far away? Our method weights these points equally when making its prediction.\n", "\n", "**Idea**: Assign different weights to each of the k neighbors based on their distance from the query point.\n", "\n", "This ensures that closer neighbors have a bigger influence on the prediction than neighbors that are farther away.\n", "\n", "Let $(x^\\text{NN}_i, y^\\text{NN}_i)$ be the $i^\\text{th}$ nearest neighbor.\n", "\n", "Let $w_i$ be the weight associated with the point $(x^\\text{NN}_i, y^\\text{NN}_i)$. We will consider only non-negative weights, i.e., $w_i \\geq 0$. Soon we will describe how to compute $w_i$.\n", "\n", "The weighted k-NN prediction is then:\n", "$$\n", "\\hat y = \\frac{\\sum_{i=1}^k w_i \\, y^\\text{NN}_i}{\\sum_{j=1}^k w_j}\n", "$$\n", "which is equivalent to\n", "$$\n", "\\hat y = \\sum_{i=1}^k \\frac{w_i}{\\sum_{j=1}^k w_j} \\, y^\\text{NN}_i.\n", "$$\n", "\n", "To see why we divide by the sum of the weights, consider the case where $k=2$ and $w_1=w_2=1$. In this case, if we didn't divide by the sum of the weights the prediction would be $y_1^\\text{NN} + y_2^\\text{NN}$, which will be roughly two times too big. Dividing by the sum of the weights makes the weights sum to one, and results in a **weighted average** of the labels." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Weighting Options\n", "\n", "There are several methods to assign weights in weighted k-NN. \n", "\n", "**Question**: Would it be reasonable to use $w_i=\\operatorname{dist}(x_i^\\text{NN}, x_\\text{query})$?\n", "\n", "**Answer**: No, this would place larger weights on points farther from the query." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One option would be to use the inverse of the distance as the weight:\n", "$$\n", "w_i = \\frac{1}{\\operatorname{dist}(x_i^\\text{NN}, x_\\text{query})}.\n", "$$\n", "However, we might want the weight to decrease faster for points that are farther away. Consider the following bell-curve shape mapping distances to weights:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# Gaussian Kernel Function\n", "def gaussian_kernel(distance, sigma=1.0):\n", " return np.exp(- (distance ** 2) / (2 * sigma ** 2))\n", "\n", "# Generate distance values from 0 to 3\n", "distances = np.linspace(0, 3, 100)\n", "\n", "# Compute weights using the Gaussian kernel\n", "weights = gaussian_kernel(distances)\n", "\n", "# Plotting\n", "plt.figure(figsize=(8, 4))\n", "plt.plot(distances, weights)\n", "plt.xlabel(r'dist$(x_i^{\\text{NN}}, x_{\\text{query}})$') # Use raw string so we don't have to escape the backslashes in LaTeX\n", "plt.ylabel(r'$w_i$')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function is called the **Gaussian kernel**. It is the (re-scaled) probability density function of a normal distribution:\n", "$$\n", "f(x)=\\frac{1}{\\sigma \\sqrt{2\\pi}}e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}},\n", "$$\n", "with mean $\\mu=0$ and standard deviation $\\sigma=1$.\n", "\n", "Because we will divide all weights by the sum of the weights, scaling each weight by the same constant has no impact on the final weighting. So, we can drop the $\\frac{1}{\\sigma \\sqrt{2\\pi}}$ term and write the Gaussian kernel as:\n", "$$\n", "e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}.\n", "$$\n", "We will apply this with $\\mu=0$ and with $x$ corresponding to the distance between the query and point, so we can write this as:\n", "$$\n", "e^{-\\frac{\\operatorname{dist}(x_i^\\text{NN}, x_\\text{query})^2}{2\\sigma^2}}.\n", "$$\n", "\n", "Cleaning this up, let:\n", "$$\n", "d_i = \\operatorname{dist}(x_i^\\text{NN}, x_\\text{query}),\n", "$$\n", "and\n", "$$\n", "w_i = e^{-\\frac{d_i^2}{2\\sigma^2}}.\n", "$$\n", "\n", "We can then plug this weight into the weighted k-NN prediction equation:\n", "$$\n", "\\hat y = \\frac{\\sum_{i=1}^k w_i \\, y^\\text{NN}_i}{\\sum_{i=1}^k w_i}.\n", "$$\n", "\n", "Before we experiment with this new NN variant, let's think more about what $\\sigma$ (another hyperparameter) does.\n", "\n", "**Question**: What is the impact of a bigger value for $\\sigma$?\n", "\n", "**Answer**: A larger value of sigma makes the weight curve wider, placing larger weights on points that are farther away. A smaller value of sigma makes the weight curve tighter, placing more emphasis on points that are closer. We can see this in the following plot:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAGSCAYAAADw/0kVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB09klEQVR4nO3dd3gU5drH8e/upickEEpoofcinYj0oogUFZWih6ai+KKoKEexcbDA8dgVFA+CKIJgAz2iCNIREAFBpYNBEEjoSQgkIdl5/xh2yZJCAiGzm/w+l3Pt7jPPzNw7WZc7T55iMwzDQERERETEB9mtDkBERERE5HIpmRURERERn6VkVkRERER8lpJZEREREfFZSmZFRERExGcpmRURERERn6VkVkRERER8lpJZEREREfFZSmZFRERExGcpmRXxUTNmzMBms7Fv3z6rQ/Epy5cvx2azsXz58qty/k6dOtGpU6c8123UqNFViSMnNpuNf/3rXx5lv/zyC9dddx2hoaHYbDY2b94MwMKFC2natClBQUHYbDZOnTpVqLF6g2rVqjF06FCrw/AKuhfirZTMSrEUGxvLgw8+SJ06dQgJCSEkJIQGDRowcuRIfvvtN6vD83rVqlWjV69eWcpnzpyJw+HgxhtvJCUlxYLIvM+hQ4f417/+5U4QC1K1atWw2WzYbDbsdjslS5akcePG3Hffffz88895Ose5c+e44447OHHiBG+88QYzZ86katWqHD9+nH79+hEcHMzkyZOZOXMmoaGhBf4eCsLl3OPff/+d22+/napVqxIUFESlSpW4/vrreeedd65eoIXk9ddfx2az8eOPP+ZYZ+rUqdhsNr755ptCjEzk6vCzOgCRwvbtt9/Sv39//Pz8uOuuu2jSpAl2u50dO3bw1Vdf8d577xEbG0vVqlWtDjVXgwYNYsCAAQQGBlodCgCzZs1i6NChdOvWjfnz5xMUFGR1SJZYtGiRx+tDhw4xfvx4qlWrRtOmTQv8ek2bNuWxxx4DICkpie3bt/P5558zdepUHn30UV5//XWP+mfPnsXP78JX/969e/nrr7+YOnUq9957r7t84cKFJCUl8cILL9CtW7cCj7sg5fcer1mzhs6dO1OlShWGDx9O+fLlOXDgAOvWreOtt97ioYcectfduXMndrtvtfsMGDCAMWPGMHv27Bx/drNnz6Z06dL06NGjkKMTKXhKZqVY2bt3LwMGDKBq1aosWbKEChUqeOx/+eWXeffdd33iHy+Hw4HD4bA6DADmzJnDkCFD6NKlC19//XWBJLJnzpwhJCSkAKIrXAEBAYV6vUqVKvGPf/zDo+zll1/mzjvv5I033qB27do88MAD7n0X/2yOHDkCQMmSJfNUfiWSk5O9onX3pZdeIiIigl9++SXH9+3iLb8s5kfFihXp3Lmz+5fzi9/DwYMHWblyJffddx/+/v4WRSlSgAyRYuS+++4zAGPdunV5PmbLli3GkCFDjOrVqxuBgYFGVFSUMWzYMOPYsWMe9YYMGWJUrVo1y/Hjxo0zLv5fbdGiRUbbtm2NiIgIIzQ01KhTp44xduxYjzpvv/220aBBAyM4ONgoWbKk0aJFC2PWrFnu/R9++KEBGLGxse6y+fPnGzfddJNRoUIFIyAgwKhRo4bx/PPPG+np6R7n7tixo9GwYUNj69atRqdOnYzg4GCjYsWKxssvv5yne1K1alWjZ8+ehmEYxty5cw2Hw2F07drVOHPmTJa6M2fONJo3b24EBQUZpUqVMvr372/s378/23g2bNhgtG/f3ggODjYefvhhIzY21gCMV155xXj//feNGjVqGAEBAUbLli2N9evXZ7nW9u3bjdtuu80oVaqUERgYaLRo0cL4+uuvPeosW7bMAIxly5bl+P62bNliAB7HbtiwwQCMZs2aedS98cYbjdatW3u8l44dO3pc6+Ltww8/9HjfBfFzuFhSUpIRGRlpVKpUyXA6ne5ywBg3bpxhGOZn9uLYXPFfXD5kyBD3OdatW2d0797dCA8PN4KDg40OHToYq1ev9ri+63O/detWY+DAgUbJkiWNpk2buvfn53OR2/251D3OTt26dY1OnTpd6vYahmHe48zv3TDMz0eHDh2MoKAgo1KlSsYLL7xgTJ8+Pcv/j66fz7Jly4wWLVoYQUFBRqNGjdyfvS+//NJo1KiRERgYaDRv3tzYtGlTluvk5bsnO67vhy+//DLLvldffdUAjFWrVhmGYRivvPKK0aZNGyMyMtIICgoymjdvbnz++eeXvBfZfbdlvnbme2EYhvHdd98Z7dq1M0JCQoywsDDjpptuMv744w+POocPHzaGDh1qVKpUyQgICDDKly9v9OnTJ8u5RDLz/uYnkQL07bffUqtWLWJiYvJ8zOLFi/nzzz8ZNmwY77zzDgMGDGDOnDncdNNNGIaR7xi2bt1Kr169SE1N5fnnn+e1116jT58+/PTTT+46U6dOZdSoUTRo0IA333yT8ePH07Rp00v2g5wxYwZhYWGMHj2at956ixYtWvDcc8/x5JNPZql78uRJbrzxRpo0acJrr71GvXr1eOKJJ/j+++/z/F6+/PJL7rrrLjp06MD//vc/goODPfa/9NJLDB48mNq1a/P666/zyCOPsGTJEjp06JBlMNHx48fp0aMHTZs25c0336Rz587ufbNnz+aVV17h/vvv58UXX2Tfvn307duXc+fOedzXa6+9lu3bt/Pkk0/y2muvERoayi233MK8efPy/J4AGjVqRMmSJVm5cqW7bNWqVdjtdrZs2UJiYiIATqeTNWvW0KFDh2zPU79+fZ5//nkA7rvvPmbOnMnMmTM96hfEzyE7YWFh3HrrrRw8eJBt27ZlW+f+++/nqaeeAmDUqFHMnDmTp59+mqeffpr77rsPgOeff56ZM2dy//33A7B06VI6dOhAYmIi48aNY8KECZw6dYouXbqwfv36LNe44447OHPmDBMmTGD48OFA/j4Xl7o/ebnHF6tatSobN27kjz/+yMcdNR08eJDOnTuzdetWxo4dy6OPPsqsWbN46623sq2/Z88e7rzzTnr37s3EiRM5efIkvXv3ZtasWTz66KP84x//YPz48ezdu5d+/frhdDrdx17Jd0/fvn0JCgpi9uzZWfbNnj2bqlWr0rZtWwDeeustmjVrxvPPP8+ECRPw8/PjjjvuYMGCBfm+PzmZOXMmPXv2JCwsjJdffplnn32Wbdu20a5dO49BrLfddhvz5s1j2LBhvPvuu4waNYqkpCT2799fYLFIEWR1Ni1SWBISEgzAuOWWW7LsO3nypHH06FH3lrmFMbvWxk8//dQAjJUrV7rL8toy+8YbbxiAcfTo0Rxjvfnmm42GDRvm+n6ya/3ILtb777/fCAkJMVJSUtxlrpa3jz/+2F2WmppqlC9f3rjttttyva5hmC00FStWNPz8/IxOnToZycnJWers27fPcDgcxksvveRR/vvvvxt+fn4e5a54pkyZ4lHX1TJbunRp48SJE+7yr7/+2gCM//3vf+6yrl27Go0bN/Z4n06n07juuuuM2rVru8vy0jJrGIbRs2dPjxbXvn37Gn379jUcDofx/fffG4ZhGJs2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rg3t27cnNTWVWbNmER8fn+tAIyi41q38On36NPPmzSM6Opr69esXyDlr1qwJmC1pl3ufr8bnoqDuccuWLQE4fPhwjnWqVq3Knj17spRnV3Yl8vPdk5u77rqLKVOmMHfuXGJjY7HZbAwcONC9/8svvyQoKIgffvjBYwqvDz/88JLndrXAnzp1ymOKs4u/81yfm3LlyuXpc1OzZk0ee+wxHnvsMXbv3k3Tpk157bXX+OSTTy55rBRP6jMrxco///lPQkJCuPvuu4mPj8+y/+LWHlfrycXlb775ZpZja9asSUJCgsefPw8fPpxlJP2JEyeyHOtq5XL9ie/48eMe+wMCAmjQoAGGYXiM4L9UrGlpabz77rvZ1i8o/v7+fPHFF7Rt25ZHHnmEmTNnAuZoaofDwfjx47PcP8MwsrzHK1GuXDk6derE+++/n20icvTo0cs6b/v27fn5559ZtmyZO5ktU6YM9evX5+WXX3bXyY1rXtXCXAr27NmzDBo0iBMnTvD0008XWLLXokULatasyauvvpptd5283Oer8bnI7z1etmxZti273333HQB169bN8dju3buzdu1aj9XGTpw4waxZs/IecB7k57snN23btqVatWp88sknzJ07l44dO1K5cmWP69hsNo/W1H379jF//vxLntuVpGae9SM5OZmPPvrIo1737t0JDw9nwoQJ2X5/uT43Z86cybJyYM2aNSlRooRH9weRi6llVoqV2rVrM3v2bAYOHEjdunXdK4AZhkFsbCyzZ8/Gbre7v+zDw8Pp0KED//nPfzh37hyVKlVi0aJF2bZ2DhgwgCeeeIJbb72VUaNGcebMGd577z3q1KnjMZDi+eefZ+XKlfTs2ZOqVaty5MgR3n33XSpXruweSHTDDTdQvnx52rZtS1RUFNu3b2fSpEn07Nkzx/6P1113HaVKlWLIkCGMGjUKm83GzJkzC+zPsbkJCQlhwYIFdOzYkbvvvpuIiAj69OnDiy++yNixY9m3bx+33HILJUqUIDY2lnnz5nHffffx+OOPF1gMkydPpl27djRu3Jjhw4dTo0YN4uPjWbt2LX///TdbtmzJ9znbt2/PSy+9xIEDBzyS1g4dOvD+++9TrVo1j8QgOzVr1qRkyZJMmTKFEiVKEBoaSkxMTJa+pJfr4MGD7har06dPs23bNj7//HPi4uJ47LHH3FNqFQS73c4HH3xAjx49aNiwIcOGDaNSpUocPHiQZcuWER4ezv/+979cz1GzZs0C/1zk9x4/9NBDnDlzhltvvZV69eqRlpbGmjVrmDt3LtWqVctxICKYvxB/8sknXH/99Tz00EOEhobywQcfUKVKFU6cOFFgvzjk57snNzabjTvvvJMJEyYAuKcxc+nZsyevv/46N954I3feeSdHjhxh8uTJ1KpV65L9km+44QaqVKnCPffcw5gxY3A4HEyfPp2yZct6TKUVHh7Oe++9x6BBg2jevDkDBgxw11mwYAFt27Zl0qRJ7Nq1i65du9KvXz8aNGiAn58f8+bNIz4+ngEDBuTrfUsxU5hTJ4h4iz179hgPPPCAUatWLSMoKMgIDg426tWrZ4wYMcLYvHmzR92///7buPXWW42SJUsaERERxh133GEcOnQoyxRHhmFO+dOoUSMjICDAqFu3rvHJJ59kmb5myZIlxs0332xUrFjRCAgIMCpWrGgMHDjQ2LVrl7vO+++/b3To0MEoXbq0ERgYaNSsWdMYM2aMxxQ72U3N9dNPPxnXXnute3J515RDXDTlj2sy+ovlNL3YxXKaEiouLs59TzNPDN+uXTsjNDTUCA0NNerVq2eMHDnS2Llz5yXjybxowsWyu/979+41Bg8ebJQvX97w9/c3KlWqZPTq1cv44osv3HXyOjWXYRhGYmKi4XA4jBIlSngsPPHJJ58YgDFo0KAsx1w8NZdhmFOJNWjQwPDz88t20YSL5efnwPlFAmw2mxEeHm40bNjQGD58uPHzzz9ne8zF9y0/U3O5/Prrr0bfvn3dn8+qVasa/fr1M5YsWeKu4/rc5zQF3ZV8LrK7Pznd4+x8//33xt13323Uq1fPCAsLMwICAoxatWoZDz30kBEfH+9RN7tFE3799Vejffv2RmBgoFG5cmVj4sSJxttvv20ARlxcnMex2f1/AhgjR470KMvus56f757cbN261QCMwMBA4+TJk1n2T5s2zahdu7YRGBho1KtXz/jwww+znXYru3uxceNGIyYmxggICDCqVKlivP766zkumrBs2TKje/fuRkREhBEUFGTUrFnTGDp0qLFhwwbDMAzj2LFjxsiRI4169eoZoaGhRkREhBETE2N89tlneX6vUjzZDKMQmm1ERESKsEceeYT333+f06dPe80y0yLFhfrMioiI5MPZs2c9Xh8/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FcuWWbvdTuXKlQv9uuHh4fqfzgK679bQfbeG7rs1dN+tofte+Ar7nufWIuuiAWAiIiIi4rOUzIqIiIiIz1IyWwgCAwMZN24cgYGBVodSrOi+W0P33Rq679bQfbeG7nvh8+Z7XiwHgImIiIhI0aCWWRERERHxWUpmRURERMRnKZkVEREREZ+lZFZEREREfJaS2QIyefJkqlWrRlBQEDExMaxfvz7X+p9//jn16tUjKCiIxo0b89133xVSpEVLfu77jBkzsNlsHltQUFAhRuv7Vq5cSe/evalYsSI2m4358+df8pjly5fTvHlzAgMDqVWrFjNmzLjqcRY1+b3vy5cvz/JZt9lsxMXFFU7ARcTEiRNp1aoVJUqUoFy5ctxyyy3s3Lnzksfp+/3KXM591/f7lXvvvfe45ppr3IsitGnThu+//z7XY7zls65ktgDMnTuX0aNHM27cODZt2kSTJk3o3r07R44cybb+mjVrGDhwIPfccw+//vort9xyC7fccgt//PFHIUfu2/J738FcueTw4cPu7a+//irEiH1fcnIyTZo0YfLkyXmqHxsbS8+ePencuTObN2/mkUce4d577+WHH364ypEWLfm97y47d+70+LyXK1fuKkVYNK1YsYKRI0eybt06Fi9ezLlz57jhhhtITk7O8Rh9v1+5y7nvoO/3K1W5cmX+/e9/s3HjRjZs2ECXLl24+eab2bp1a7b1veqzbsgVa926tTFy5Ej364yMDKNixYrGxIkTs63fr18/o2fPnh5lMTExxv33339V4yxq8nvfP/zwQyMiIqKQoiv6AGPevHm51vnnP/9pNGzY0KOsf//+Rvfu3a9iZEVbXu77smXLDMA4efJkocRUXBw5csQAjBUrVuRYR9/vBS8v913f71dHqVKljA8++CDbfd70WVfL7BVKS0tj48aNdOvWzV1mt9vp1q0ba9euzfaYtWvXetQH6N69e471JavLue8Ap0+fpmrVqkRHR+f6G6cUDH3WrdW0aVMqVKjA9ddfz08//WR1OD4vISEBgMjIyBzr6DNf8PJy30Hf7wUpIyODOXPmkJycTJs2bbKt402fdSWzV+jYsWNkZGQQFRXlUR4VFZVj/7S4uLh81ZesLue+161bl+nTp/P111/zySef4HQ6ue666/j7778LI+RiKafPemJiImfPnrUoqqKvQoUKTJkyhS+//JIvv/yS6OhoOnXqxKZNm6wOzWc5nU4eeeQR2rZtS6NGjXKsp+/3gpXX+67v94Lx+++/ExYWRmBgICNGjGDevHk0aNAg27re9Fn3K/QrilikTZs2Hr9hXnfdddSvX5/333+fF154wcLIRApW3bp1qVu3rvv1ddddx969e3njjTeYOXOmhZH5rpEjR/LHH3+wevVqq0MpVvJ63/X9XjDq1q3L5s2bSUhI4IsvvmDIkCGsWLEix4TWW6hl9gqVKVMGh8NBfHy8R3l8fDzly5fP9pjy5cvnq75kdTn3/WL+/v40a9aMPXv2XI0QhZw/6+Hh4QQHB1sUVfHUunVrfdYv04MPPsi3337LsmXLqFy5cq519f1ecPJz3y+m7/fLExAQQK1atWjRogUTJ06kSZMmvPXWW9nW9abPupLZKxQQEECLFi1YsmSJu8zpdLJkyZIc+5m0adPGoz7A4sWLc6wvWV3Ofb9YRkYGv//+OxUqVLhaYRZ7+qx7j82bN+uznk+GYfDggw8yb948li5dSvXq1S95jD7zV+5y7vvF9P1eMJxOJ6mpqdnu86rPeqEPOSuC5syZYwQGBhozZswwtm3bZtx3331GyZIljbi4OMMwDGPQoEHGk08+6a7/008/GX5+fsarr75qbN++3Rg3bpzh7+9v/P7771a9BZ+U3/s+fvx444cffjD27t1rbNy40RgwYIARFBRkbN261aq34HOSkpKMX3/91fj1118NwHj99deNX3/91fjrr78MwzCMJ5980hg0aJC7/p9//mmEhIQYY8aMMbZv325MnjzZcDgcxsKFC616Cz4pv/f9jTfeMObPn2/s3r3b+P33342HH37YsNvtxo8//mjVW/BJDzzwgBEREWEsX77cOHz4sHs7c+aMu46+3wve5dx3fb9fuSeffNJYsWKFERsba/z222/Gk08+adhsNmPRokWGYXj3Z13JbAF55513jCpVqhgBAQFG69atjXXr1rn3dezY0RgyZIhH/c8++8yoU6eOERAQYDRs2NBYsGBBIUdcNOTnvj/yyCPuulFRUcZNN91kbNq0yYKofZdryqeLN9d9HjJkiNGxY8csxzRt2tQICAgwatSoYXz44YeFHrevy+99f/nll42aNWsaQUFBRmRkpNGpUydj6dKl1gTvw7K754DHZ1jf7wXvcu67vt+v3N13321UrVrVCAgIMMqWLWt07drVncgahnd/1m2GYRiF1w4sIiIiIlJw1GdWRERERHyWklkRERER8VlKZkVERETEZymZFRERERGfpWRWRERERHyWklkRERER8VlKZkVERETEZymZFRERERGfpWRWRERERHyWklkRERER8VlKZkVEvJTNZuOZZ55xv3788ceZMWPGJfeJiBQnSmZFRLxUWFgYs2bNIikpKV/7RESKEyWzIiIX6dSpE4888kiW51fi+PHjlCtXjn379uX5mMDAQO666y7efffdfO3zRQMGDOC1116zOgwR8UFKZkVEcvHVV1/xwgsv5KlubonvSy+9xM0330y1atXydf2HH36Y//73v6SkpORrn6955plneOmll0hISLA6FBHxMUpmRURyERkZSYkSJa7oHGfOnGHatGncc889+T62bNmy9OrVi+nTp+drn69p1KgRNWvW5JNPPrE6FBHxMUpmRaRYS05OZvDgwYSFhVGhQoUsf+q+uLX1iy++oHHjxgQHB1O6dGm6detGcnIyQ4cOZcWKFbz11lvYbDZsNpu7S8F3331HYGAg1157rfs8n376KcHBwRw+fNhdNmzYMK655posrZOPP/44b731Funp6Vniz21fTvJz7cLUu3dv5syZY9n1RcQ3KZkVkWJtzJgxrFixgq+//ppFixaxfPlyNm3alG3dw4cPM3DgQO6++262b9/O8uXL6du3L4Zh8NZbb9GmTRuGDx/O4cOHOXz4MNHR0QCsWrWKFi1aeJxrwIAB1KlThwkTJgAwbtw4fvzxR77//nsiIiI86kZHR9O2bVu+/PLLLDHlti8n+bl2YWrdujXr168nNTXVshhExPf4WR2AiIhVTp8+zbRp0/jkk0/o2rUrAB999BGVK1fOtv7hw4dJT0+nb9++VK1aFYDGjRu79wcEBBASEkL58uU9jvvrr7+oWLGiR5nNZuOll17i9ttvp3z58rzzzjusWrWKSpUqZXvtJ554go8++ijf+7KT32sXlooVK5KWlkZcXJz7/oqIXIqSWREptvbu3UtaWhoxMTHussjISOrWrZtt/SZNmtC1a1caN25M9+7dueGGG7j99tspVapUrtc5e/YsQUFBWcp79epFgwYNeP7551m0aBENGzb02H/s2DH387p165KRkZGnfXlxqWtbITg4GDD7GIuI5JW6GYiI5JHD4WDx4sV8//33NGjQgHfeeYe6desSGxub63FlypTh5MmTWcoXLlzIjh07yMjIICoqymPf0qVLr+pUVbld+2pwOp2XrHPixAnAHNgmIpJXSmZFpNiqWbMm/v7+/Pzzz+6ykydPsmvXrhyPsdlstG3blvHjx/Prr78SEBDAvHnzALObQXYtpM2aNWPbtm0eZZs2baJfv35MmzaNrl278uyzz3rs79KlC4899tiVvL0cXera//rXv6hbty5dunShR48efPvttwDs27ePli1buutlXnVs5syZtGrViiZNmjB69Gh3/caNGzNgwAAaNGjAmDFjeP/9993HDxo0yH1ugD/++IPKlStTpkyZq/K+RaRoUjIrIsVWWFgY99xzD2PGjGHp0qX88ccfDB06FLs9+6/Gn3/+mQkTJrBhwwb279/PV199xdGjR6lfvz4A1apV4+eff2bfvn0cO3bM3RrZvXt3tm7d6m6d3bdvHz179uSpp55i4MCBPP/883z55ZceA8/69OnD77//XuDv+VLX/uWXX1iwYAG//fYbs2bNYu3atZc85/bt2/n6669Zu3YtW7Zs4dixYyxYsMC976mnnmLHjh2MGDGCmTNnAmZ/5TVr1nDjjTe6z7Nq1SpuuOGGAn/PIlK0KZkVkWLtlVdeoX379vTu3Ztu3brRrl27LDMPuISHh7Ny5Upuuukm6tSpwzPPPMNrr71Gjx49ALOl0uFw0KBBA8qWLcv+/fsBc5BY8+bN+eyzzzhx4gQ33ngjN998M08++SQAMTEx9OjRg6eeesp9rR07dlCvXr3Lfl8zZszAZrN5lOXl2j/99BO33norgYGBVKhQgS5dulzyWkuWLGHdunW0bNmSpk2bsm7dOvbs2QNAnTp1uOaaawCzJdzPz4/du3fz5ZdfcvPNN+PnZw7dSElJYf78+QwfPvyy37OIFE8aACYixVpYWBgzZ850txiCOV2Xy/Lly93P69evz8KFC3M8V506dXJsyXzuuecYM2YMw4cPZ8eOHVn2u1oyAZKSkggKCsLf3z8/b8VDbGwsHTt29CiLjIy85LWBLEmwi5+fn0ffV9cUWk6nk+HDhzNu3DiP+vv27SMkJMSjbOjQoXz88cesWbOG119/3V3+4Ycf0rp1a4+5eEVE8kItsyIihaBnz57cd999HDx48JJ1t27desWzC3z//ff85z//yfdx7dq1Y/78+e4pspYtW+beV65cOQ4dOkRSUhKnT59m8eLFAHTt2pW5c+dy/PhxAI4cOeKxIENmd9xxB59++iknT56kSZMm7nJ/f3/eeeedfMcrIqKWWRGRQpJ5JbHc/P777x7z116O9evXX9ZxLVu2pEePHjRu3JhKlSp5tJQGBATwz3/+k2bNmlGlShV3jA0bNuTpp5+ma9euOJ1OAgMDmTFjBqGhoVnOHxoaSqtWrWjVqpVH+b333ntZ8YqI2AzDMKwOQkRELhg1ahTdunWjT58+VofC0KFDuf322+nVq1eBnC89PZ2mTZuydOlSypUrVyDnFJHiTS2zIiJe5u2337Y6hKti8+bN3HrrrQwbNkyJrIgUGLXMioiIiIjP0gAwEREREfFZSmZFRERExGcpmRURERERn6VkVkRERER8lpJZEREREfFZSmZFRERExGcpmRURERERn6VkVkRERER8lpJZEREREfFZSmZFRERExGcpmRURERERn/X/TAXpv7PHG/8AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plotting for different sigma values\n", "plt.figure(figsize=(8, 4))\n", "\n", "for sigma in [0.1, 1, 10]:\n", " weights = gaussian_kernel(distances, sigma)\n", " plt.plot(distances, weights, label=rf'$\\sigma = {sigma}$') # LaTeX formatting for sigma\n", "\n", "\n", "plt.xlabel(r'dist$(x_i^{\\text{NN}}, x_{\\text{query}})$') # Use raw string for LaTeX\n", "plt.ylabel(r'$w_i$')\n", "plt.title('Gaussian Kernel with Different Sigma Values')\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ok, let's code up the weighted k-NN algorithm!" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from sklearn.neighbors import KDTree\n", "from sklearn.base import BaseEstimator\n", "import numpy as np\n", "\n", "class WeightedKNearestNeighbors(BaseEstimator):\n", " # Add a constructor that stores the value of k and sigma (hyperparameters)\n", " def __init__(self, k=3, sigma=1.0):\n", " self.k = k\n", " self.sigma = sigma\n", "\n", " def fit(self, X, y):\n", " # Convert X and y to NumPy arrays if they are DataFrames\n", " if isinstance(X, pd.DataFrame):\n", " X = X.values\n", " if isinstance(y, pd.Series):\n", " y = y.values\n", "\n", " # Store the training data and labels\n", " self.X_data = X\n", " self.y_data = y\n", " \n", " # Create a KDTree for efficient nearest neighbor search\n", " self.tree = KDTree(X)\n", "\n", " return self\n", "\n", " def gaussian_kernel(self, distance):\n", " # Gaussian kernel function\n", " return np.exp(- (distance ** 2) / (2 * self.sigma ** 2))\n", "\n", " def predict(self, X):\n", " # Convert X to a NumPy array if it's a DataFrame\n", " if isinstance(X, pd.DataFrame):\n", " X = X.values\n", "\n", " # We will iteratively load predictions, so it starts empty\n", " predictions = []\n", " \n", " # Loop over rows in the query\n", " for x in X:\n", " # Query the tree for the k nearest neighbors\n", " dist, ind = self.tree.query([x], k=self.k)\n", "\n", " # Calculate weights using the Gaussian kernel\n", " weights = self.gaussian_kernel(dist[0])\n", "\n", " # Check if weights sum to zero. This happens when all points are very far, giving weights that round to zero, causing divison by zero later. In this case, revert to un-weighted (all weights are one).\n", " if np.sum(weights) == 0:\n", " # If weights sum to zero, assign equal weight to all neighbors\n", " weights = np.ones_like(weights)\n", "\n", " # Weighted average of the labels of the k nearest neighbors\n", " weighted_avg_label = np.average(self.y_data[ind[0]], weights=weights)\n", " predictions.append(weighted_avg_label)\n", "\n", " # Return the array of predictions we have created\n", " return np.array(predictions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's add this to our comparison of methods:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
 ModelMSERMSEMAER^2
0k-NN k=1 sigma=None1.1520841.0733520.823743-0.687769
1k-NN k=100 sigma=None0.5794040.7611860.5969190.151190
2k-NN k=100 sigma=1000.5795720.7612970.5969520.150943
3k-NN k=200 sigma=1000.5775540.7599700.5962200.153901
4k-NN k=300 sigma=1000.5774430.7598970.5964080.154062
5k-NN k=400 sigma=1000.5776200.7600130.5966700.153804
6k-NN k=500 sigma=1000.5780770.7603140.5970440.153135
\n" ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Model parameters to test\n", "parameters = [\n", " {\"k\": 1, \"sigma\": None}, # Standard k-NN\n", " {\"k\": 100, \"sigma\": None}, # Standard k-NN\n", " {\"k\": 100, \"sigma\": 100},\n", " {\"k\": 200, \"sigma\": 100},\n", " {\"k\": 300, \"sigma\": 100},\n", " {\"k\": 400, \"sigma\": 100},\n", " {\"k\": 500, \"sigma\": 100}\n", "]\n", "\n", "# Dictionary to store results\n", "results = []\n", "\n", "# Training and evaluating each model\n", "for param in parameters:\n", " # Determine which model to use. Notice that we can use k-NN for NN by setting k=1\n", " if param[\"sigma\"] is None:\n", " model = KNearestNeighbors(k=param[\"k\"])\n", " else:\n", " model = WeightedKNearestNeighbors(k=param[\"k\"], sigma=param[\"sigma\"])\n", "\n", " # Train the model and get the predictions on the test set\n", " model.fit(X_train, y_train)\n", " predictions = model.predict(X_test)\n", "\n", " mse = mean_squared_error(predictions, y_test)\n", " rmse = root_mean_squared_error(predictions, y_test)\n", " mae = mean_absolute_error(predictions, y_test)\n", " r2 = r_squared(predictions, y_test)\n", "\n", " results.append({\"Model\": f\"k-NN k={param['k']} sigma={param['sigma']}\", \n", " \"MSE\": mse, \"RMSE\": rmse, \"MAE\": mae, \"R^2\": r2})\n", "\n", "# Creating DataFrame for results\n", "results_df = pd.DataFrame(results)\n", "\n", "# Finding the best (minimum or maximum) values for each metric\n", "best_metrics = {\n", " \"MSE\": results_df['MSE'].idxmin(),\n", " \"RMSE\": results_df['RMSE'].idxmin(),\n", " \"MAE\": results_df['MAE'].idxmin(),\n", " \"R^2\": results_df['R^2'].idxmax()\n", "}\n", "\n", "# Highlighting the best values in the DataFrame\n", "def highlight_best(row, best_metrics):\n", " return ['font-weight: bold' if (col in best_metrics and row.name == best_metrics[col]) else '' for col in row.index]\n", "\n", "# Apply the highlighting\n", "styled_results = results_df.style.apply(highlight_best, best_metrics=best_metrics, axis=1)\n", "styled_results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case, it doesn't make a big difference. We will re-visit this later, seeing more significant improvements for other data sets.\n", "\n", "**Question**: How can the nearest neighbor algorithms be extended to the classification setting?\n", "\n", "**Answer (k-NN)**: The most common method is to use a majority vote among the k nearest neighbors. That is, whichever label is most common among the nearest neighbors is selected. \n", "\n", "**Answer (weighted k-NN)**: Each neighbor's vote is weighted in the vote." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Tuning Hyperparameters\n", "\n", "Let we will discuss the tuning of hyperparameters more. For now, notice that this is often more of an art than a science. Over time, you become more familiar with how different parameters change the behavior of algorithms and learn to guess changes to hyperparameters that could be more effective.\n", "\n", "In this case, let's run a **grid search** over values of k and $\\sigma$ to see which are most effective.\n", "\n", "A **grid search** for hyperparameters involves training an evaluating a model exhaustively over a specified range of hyperparameter values, with the aim of identifying the combination of parameters that results in the best performance. This process involves creating and testing every possible combination of the provided parameter values." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits.mplot3d import Axes3D\n", "import pickle\n", "import os\n", "\n", "# Path to the cache file\n", "cache_file = 'cache/Lecture_5/hyperparamSearch.pkl'\n", "re_run = False # Set to True to force re-running the grid search\n", "\n", "# Check if cache file exists and re_run is False\n", "if not os.path.exists(cache_file) or re_run:\n", " # Define the ranges for k and sigma\n", " k_values = [k for k in range(100, 1100, 100)]\n", " sigma_values = [20, 50, 75, 100, 200, 400, 600]\n", "\n", " # Initialize matrix to store R^2 values\n", " r2_values = np.zeros((len(k_values), len(sigma_values)))\n", "\n", " # Grid search\n", " for i, k in enumerate(k_values):\n", " for j, sigma in enumerate(sigma_values):\n", " model = WeightedKNearestNeighbors(k=k, sigma=sigma)\n", " model.fit(X_train, y_train)\n", " predictions = model.predict(X_test)\n", "\n", " # Compute R^2 value\n", " r2 = r_squared(predictions, y_test)\n", " r2_values[i, j] = r2\n", " \n", " # Save the results to a pickle file\n", " with open(cache_file, 'wb') as f:\n", " pickle.dump({'r2_values': r2_values, 'k_values': k_values, 'sigma_values': sigma_values}, f)\n", "else:\n", " # Load the results from the pickle file\n", " with open(cache_file, 'rb') as f:\n", " data = pickle.load(f)\n", " r2_values = data['r2_values']\n", " k_values = data['k_values']\n", " sigma_values = data['sigma_values']" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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xNTUlEmTJums3uKe88+jV69ePHr0iLVr1xbalpWVVaIRWSX93djZ2XHo0CFcXFxo167dCyMDL/NbLi6dOnUiPz+flStXqssUCkWxu7iePebW1tZUrFiRnJycIj/j7+8PUOj3/zLdasVF2zE7e/Ysp0+f1vm+BG8XIhKjZ7y9vfnqq6+YOnUqoaGhdO/eHRsbGx48eMDu3bsZNmwYEydOxNfXF29vbyZOnMijR4+wtbVl586dWvv0nzgIn376Kf7+/hgZGRWalK0kNGnSBAcHBwICAvj000+RyWRs2rSpyJB86dKlWbBgAaGhoVSuXJmtW7dy5coV1qxZUyjv4Wlq1qxJQEAAa9asUXdhnTt3jg0bNtC9e3feeeedV9byNKVKlWLQoEF8//333Lp1SyP687Ls3r2byZMnU6lSJapUqcJPP/2ksb1du3aFJtQrDl999RVHjhyhWbNmjBo1CmNjY1avXk1OTg4LFy4scXufcOnSJX766SeUSiXJycmcP3+enTt3qr/j5+VGvCzFPeefx4ABA9i2bRsjRozgzz//pGnTpigUCm7fvs22bds4dOjQS7+u4cnv5osvvqBPnz6YmJjQpUuXF04UCODk5KT+ftq2bcuJEycoU6aMVtuX+S0Xly5dutC0aVM+++wzQkND8fPzY9euXcXOlfPz86NVq1bUrVsXR0dHLly4wI4dO577io26devSo0cPli1bRkJCgnqI9ZNoqy4jwu+++y67du3ivffeo3Pnzjx48IBVq1bh5+enztkSCLTyn46Fegso6WR3O3fulJo1ayZZWVlJVlZWkq+vrzR69Gjpzp07apubN29Kbdu2laytrSUnJydp6NCh6qGiTw+hzM/Plz755BPJ2dlZkslkWie7e5onQ2a3b9/+Qi0nT56UGjVqJFlYWEilS5eWJk+eLB06dKjQkFttk915eHhIy5cvL9ZxzMvLkwIDA6UKFSpIJiYmUrly5QpNdidJJRtirY2QkBDJyMhIY1hnSShq0rQny9PHSBvPG/J86dIlyd/fX7K2tpYsLS2ld955p9AEfS86/4ra35PF2NhYcnR0lBo2bChNnTpVY7jvE151iPUTinPOP29q/9zcXGnBggVS1apVJTMzM8nBwUGqW7euFBgYqB4OLkkFk909i4eHR6Hve/bs2VKZMmUkuVxeosnugoODJXd3d6lKlSqFjsXTFPe3XNTx0zbxXEJCgjRgwAD1ZHcDBgwo9mR3X331ldSgQQPJ3t5esrCwkHx9faU5c+ZoTIWgbZ8ZGRnS6NGjJUdHR8na2lrq3r27dOfOHQnQGDb9sufHs8dWqVRKc+fOlTw8PCQzMzOpdu3a0t69e6WAgACNCSEFgmeRSdIrZr4J/l/SqlUr4uPjuX79uqGbIhAI/kOuXLlC7dq1+emnn+jfv7+hmyP4f47IiREIBAKBVrKysgqVLVu2DLlcrpH8LxAYCpETIxAIBAKtLFy4kIsXL/LOO+9gbGzMgQMHOHDgAMOGDdPbiDmB4GUQToxAIBAItNKkSROOHDnC7NmzSU9Pp3z58sycOZMvvvjC0E0TCADRnSQoIcePHxf5MALBW067du04ceIEiYmJ5ObmEhwczIwZMzReXyJ4/VmxYgWenp6Ym5vTsGFDzp07V6TtjRs36NGjB56enshkskJTYYDqhaIymUxj8fX11VqfJEl07NgRmUxW6MWt4eHhdO7cGUtLS1xcXJg0aRL5+fkvpU04MQKBQCAQvKVs3bqVCRMmMGPGDC5dukTNmjXx9/cv9OqOJ2RmZuLl5cX8+fNxc3Mrst6qVasSFRWlXk6cOKHVbtmyZVqH4ysUCjp37kxubi6nTp1iw4YNBAUFMX369JfSJ5wYgUAgEAjeUpYsWcLQoUMZNGgQfn5+rFq1CktLS9atW6fVvn79+ixatIg+ffpgZmZWZL3Gxsa4ubmpl2ffjwWqkWxff/211n0dPnyYmzdv8tNPP1GrVi06duzI7NmzWbFiBbm5ucXWJ5wYgUAgEAjeEHJyckhNTdVYipp5OTc3l4sXL2q8T04ul9O2bdtXng353r17lC5dGi8vL/r37094eLjG9szMTPr168eKFSu0RnROnz5N9erVNSYH9ff3JzU1lRs3bhS7HW9lx2Y7eU9DN0EgeCE5XRoYugl6J9NJ/y83NDQy3b4X9bVD9v9gJrFzQRP0vg9ldMneI/Ys81b1IzAwUKNsxowZzJw5s5BtfHw8CoWi0Czirq6u3L59u8RtaNiwIUFBQfj4+BAVFUVgYCDNmzfn+vXr2NjYADB+/HiaNGlCt27dtNYRHR2ttV1PthWXt9KJEQgEAoHgbWTq1KlMmKDpdD2v20cfdOzYUf1/jRo1aNiwIR4eHmzbto3Bgwfz22+/8ccff3D58mW9t0V0JwkEAoFAoGeUOvozMzPD1tZWYynKiXFycsLIyIiYmBiN8piYmOcm7b4s9vb2VK5cWf2G8z/++IOQkBDs7e0xNjZWj2br0aMHrVq1AsDNzU1ru55sKy7CiREIBAKBQM8oJKVOlpfB1NSUunXrcuzYMXWZUqnk2LFjNG7cWGfa0tPTCQkJwd3dHYDPPvuMf//9lytXrqgXgKVLl7J+/XoAGjduzLVr1zRGSR05cgRbW1v8/PyKvW/RnSQQCAQCgZ5RYpjkogkTJhAQEEC9evVo0KABy5YtIyMjg0GDBgHw0UcfUaZMGebNmweokoFv3ryp/v/Ro0dcuXIFa2trKlasCMDEiRPp0qULHh4eREZGMmPGDIyMjOjbty+AesTSs5QvX54KFSoA0L59e/z8/BgwYAALFy4kOjqaadOmMXr06JfqHhNOjEAgEAgEbym9e/cmLi6O6dOnEx0dTa1atTh48KA6iTY8PBy5vKBTJjIyktq1a6vXFy9ezOLFi2nZsiXHjx8HICIigr59+5KQkICzszPNmjXjzJkzODs7F7tdRkZG7N27l5EjR9K4cWOsrKwICAhg1qxZL6XvrXyLtRidJHgTEKOT3g7E6KQ3n/9idFJGlIdO6rFyD9NJPW8LIhIjEAgEAoGeUbx98YLXApHYKxAIBAKB4I3ktYjEREdHc/bsWfUEN25ubjRs2FCnQ8AEAoFAIDAUhkrsfdsxqBOTkZHB8OHD+eWXX5DJZDg6OgKQmJiIJEn07duX1atXY2lpachmCgQCgUDwSiiEE6MXDNqdNHbsWM6dO8e+ffvIzs4mJiaGmJgYsrOz2b9/P+fOnWPs2LGGbKJAIBAIBILXFIM6MTt37iQoKAh/f3+MjApGMRgZGdG+fXvWrVvHjh07DNhCgUAgEAheHSWSThaBJgbtTlIqlZiamha53dTUFKXyvxm/GBDYm45D2mBtb8WNk7f5dtRaHgUX/RKqd0e0p8uI9rh6qsbFh92I4KfZ2zl/8IraZvEfM6nZqqrG5/auPsw3I9cC4FXDgz5TulO1mS92TrbEhMayd/URdn+7X6fauo7yp+fErji62RNyNYwVn67jzvlgrbYefmUJCOxNpbpeuHm68P349ez+RrM9xdHeaWhbWvdtRsU6FbCytaS7QwAZKZk61aVPjU/Te0p3hszrz65v9rFyfJC63N3LlWGLPqJaM19MzIy5cPAKyz9dR3Jsiq7lAfBep9r06V4fRwcrQkJj+WbNMW7d036OepYrxeB+zajs7Yq7qx3f/fAH23+/qGEzqE8TBvVtqlEWFpHAgNHr1Otd2tegbYsqVPZ2xcrSjE79viU9Q/sbc1+Vnu/UZECHepSys+LewzgW/fwnNx5o1+dVuhQjujfB18OF0k52fL3lT7Yc1XxPy7CujRnWTXNW0tCoRD6YFqRef69FdTo09MXHwwVrCzNajVlBepZ+9AH0bF2TDzs+1hgex6LNf3LzORqHv9cEX0+VxiU//8mWI5oah3ZrzLDuhTX2/DxIvf5ey+r4NyrQ+M4o/Wr8oI2mxsU/PV/jsPc1Nf5y+BmN3RszVIvGXlOD1OvdW1bHv3GBxtajVpCeqT+NJUGMTtIPBnVi3n33XYYNG8aPP/6oMbkOwOXLlxk5ciRdunTRezt6T+5G9086snDgcqIfxDJwVh/mHZzG4KrjycvJ0/qZ+IgEfpy6mUf3okAmo31AKwL3TGFknUmE3YxQ2+1be5QN07eq13Oe+mFVqutFclwqCwZ8R+zDeKo28WHc6uEoFUp+XXFQJ9pa9mrC8K8D+HbkGm6dDeb9cZ2Zd/ALPvYdS3JcaiF7M0szoh7E8veO04xYMrDE2s0sTTl/6ArnD11hyLz+OtFSFPrQ+ITK9bzpPKwdIVdDNcrNLc2Yf2ga96+GMamN6o2yA2f1ZvZvn/Fp48/R9fRLrZv5MPrjVny98gg370bRs0tdFs/sSf9RP5KsxTk0NzMhMiaZP0/d4ZOP3ymy3vthcUyYvl29rlBoPjSYm5lw7vIDzl1+wPCPWupO0DO0q1+Z8b1bMm/TMa7fj6Jvuzp8N/59enyxnqS0rEL25qbGRMSlcPTCXSb0LrpdIY/iGbW4IJqb/8xDkbmpMaeuh3LqeiiffNBcd4K00K5BZcb1acn8jU9p/N/7fDC1CI1mxjyKS+Ho+btM6PscjRHxjF70fI2nr4Vy+looY3rqV2PbJxo3HOPG/Sj6tK/DtxPfp+dn2jWaPdZ47Pxdxr9A45inNRY6T/87jYLXC4M6McuXL6dfv37UrVsXBwcHXFxcAIiNjSU5ORl/f3+WL1+u93a8N7Yzm+fs5PRvFwBYELCc7dFradq9Pse3ntL6mTN7NZ9q10/bwrsj2lOlUWUNJyYnM4ekmGStdRxa/6fGevSDWPwaV6bpew115sT0GP8uB344xqGg4wB8M2INDTvVwf/j1mxdsKeQ/d0LIdy9EALA4CKcj+JofxLZqNGy+O/AKCn60AhgbmXO1J8+ZemwVfT/oofGtqpNfXD1dGFknclkPr44Lxy4gt2J66nVuhqXj13TjbjH9OpWj72H/+XAsesAfL3yMI3redG5bTU27zxXyP52cDS3H0cShw9oUWS9CoVEYnJGkdufRG9qVSv3Ks1/If3b12XP39f5/eQNAOZtOkqzGl50bVaNDQfOF7K/GRrDzVDVy+LG9GhWZL35CiUJqUVHAJ9Eb+r6lH2V5heLfk80nnisceNRmtb0omvzamzYr0XjgxhuPnissWfRGhXKF2h8HL2p819o9K/Lnr+us/exxvkbVBq7tKjGxn2FNd56EMOtxxpHv0jjcyK5T6I3dXz1r7GkvOVzIhoMgzoxDg4OHDhwgFu3bnHmzBmNIdaNGzfG19dX721wq+BCKXcHLh8tuOlkpmZy+2wwfo19inRinkYul9OiZyPMrcy4efquxrbW/ZrTpn9zEqOTObP3Iptn7yAnK7fIuixtLUlLTC+5oKcwNjGmcl0vfpm/W10mSRKXjv6LX6PKOtnH87T/F+hT4yfLB3N2/yUuH7tWyIkxMTMBSdKI1OVl5yIpJao189WpE2NsLKeytxs/7TirLpMkuHg1jKo+pV+p7rKl7dm1fiS5ufncuBPJ6o1/Exuf9qpNfimMjeT4eriyfn+BMyZJcO5mGDW83V+p7vKuDhz4ehg5eflcC4li+c4TxCT+t/rgsUZPV4L2FdZYveKraSzn6sD+JcPIfaJxh2E1bnhG4/kbYVR/xe+xnKsD+5YWaFyx3TAaXwUxOkk/vBbzxFSpUoUqVaoYZN+ObvYAhaIlSTHJOLjaP/ezntXK8+2pOZiam5CVnk3g+4sIv1UQhfljywliw+KIj0zCq0Z5hsz/kHKVSxP4wWKt9fk1rkyr3k2Y9u68V5Gkxs7JBiNjI5JiNHM0kmJTKOdb5pXqfpH2/wp9aWzVuwmV6ngxusFnWrffOnOP7Iwchiz4kHWf/4xMJmPw/P4YGRvh6O5Q4v1qw87WAmMjOUnJmk+iicmZlC/rWOJ6b96NYt43Bwh/lEQpRysG9WnC8nl9Cfh0PVlZ2rtR9YG9jUpf4jPRhMTUTDzdS67v+v0oZq47SFh0Ek52Vgzt2pgfPutN7+kbyMz+7/TBczSmZOLpVnKNN+5HEfjDY432Vgzt1pi1U3vT50sDakwp/D16vMr3GBLFrB8OEhal0jikW2PWfN6bvtP+e42vgkL4MHrB4E5Mbm4ue/bs4fTp0xqRmCZNmtCtW7fnJv4C5OTkkJOjmcCllBTIZdrf2dK6XzPGrRquXn8VhyHiTiQjak/Cys6S5h80YlLQGP7Xaob6Zr5/7VG1bej1cBKjkll0bAbuXq5E3Y/RqMuzajkC90xh06ztXDzyb4nb9F/xIu1vMs5lSzFq2SCmtJ9dZE5USnwqs3t9zaffD6X7Jx2RlBJ/bjnJ3Yv3kZRvxtXq7KUH6v/vh8Vx624U29YOp3VTX/Yd1W13mCE4dT1U/X9wRDzX70ezd+EQ2tXz4dcT1w3XMB1y6lqo+v/giHiuh0Tz++IhtK3vw2//vB0aTz+r8X40vy0eQtsGPvz299uhUVByDOrEBAcH4+/vT2RkJA0bNlS/VfPy5cusWrWKsmXLcuDAAfXrv7Uxb948AgMDNcoqUAVvqmq1P/3bBW6fLRi1YmKmOgQOrvYkRieryx1c7Qslcz5Lfl4+kSEqx+vepfv41PPmvbGd+GbEGq32t8/eA6BMRTcNJ6Z8lbIsPDqd/WuP8vOcXc/d58uQEp+GIl+Bg6udRrmDix1JT2ktCS+rXV/oQ2Olul44uNqz8uJCdZmRsRHVW1Sh2+gOdDLvh1Kp5OKRfwmo9Am2pWxQ5CvISMlka+Rajm+NeU7tL09Kahb5CiUO9pqTPjraW5KYVHQ+y8uSnpHDw8hEyrjb66zO4pCcptLnaPuMPltLElJ0qC8rh7CYJMq62OuszuJSpEY7SxJSdasxPCaJci+IIusDtUY7PX+PmTmERxvme3wVRE6MfjDoPDEjR46kevXqxMTEcPz4cbZu3crWrVs5fvw4MTExVK1aldGjRz+3jqlTp5KSkqKxVKDoXJqs9GwiQ6LVS9jNCBKikqjdppraxtLGAt+GFbl5+s5L6ZHJ5ZiamhS53buWJwAJUUnqMg+/siz+YwaHN/7F+mlbXmp/LyI/L5+7F+9Tu031gjbKZNRuU52bZ3Sbv/Ii7fpCHxovH7vG0OoTGFF7knq5cz6YPzafYETtSYWG/acmpJGRkkmtd6ph72KrThDXFfn5Su6GRFO3RsFbcGUyqFPDgxt3InW2HwtzE8q42ZOgQ8eoOOQrlNwOi6FBlfLqMpkM6lcpz78hUTrbj4WZCWVd7InX4Q21uOQrlNwOjaG+X2GN14J1q7GMsz3xz0nW1hdFaaznV55rOv4ey7gYRuOroECmk0WgiUEjMSdPnuTcuXPY2toW2mZra8vs2bNp2LDhc+swMzPDzMxMo6yorqSi2P3NPvp90YNH96KJehDLwFm9SYhM4uSegmz6hUemc3LPOfWooY/n9uP8gcvEhsdjYWNB637NqNnKj6kd5gCqOURa92vGuf2XSU1Iw6uGByOWBPDvXzd5cC0cUHUhLTw2g4uHrrJzyV51Do5SoSQlvvDQ4JKwc+leJgeN5u6FEO6cC+a9cZ0xtzJTj4yaHDSG+MhE1n3+M6BKlPXwU2X4m5ga41SmFN41PdXOX3G0gyqS5ehmT5mKqvdfVahenqy0bGLD40lL0k3isr40ZqVnE3rjocY+sjNySE1M0yj3H9iK8FuPSI5Lxa9xZUYtG8SuZfuIuKs7x+IJ2369wNSxnbgTHM2te1H07FIPC3MT9h9VhdM/H9eJ+IQ01mz6R6XRWI5nOSeVRhMjnEpZU7GCC1lZuTx6HKEaNbAVJ88HExOXipOjNYP6NkWplDj69y31fh3trXB0sFJHZ7w8nMjMyiMmLpW09Gyd6dt8+CIzB3fgZmgMNx5E069tHSzMTNSjlQIHdyA2KZ0Vu06o9BnJ8SpdSqXP2AhnBxsql3MmMyePiFiVvrG9WvDPlftEJaTibG/F8G5NUCqVHDp7W73fUraWlLKzUj/VVyzrRGZ2LtGJaaRm6E4fwM+HLzJjSAduhcZw4340fds/1vh4JM/MIR2IS05nxQ4tGo2K0Nj7scb4VJwdrBjWvQlKSbvGJ9EZvWo8dJEZQztw64FKY5/HGvf+81jjUNX3+P1TGiuU0dRYqbwzWdkFGj99rDE6IRUn+8calUoOP63RzhJHOyvKPfU9ZmTnEpOge42C1wuDOjH29vaEhoZSrVo1rdtDQ0Oxt7fXezu2LvwVcytzxq0ejrW9JddP3GZqxzka+RDu3q7YOtmo1+1d7Ji8YQyO7g5kpGTy4N8wpnaYw6WjqnyW/Nx86rSpwftjVTfUuIcJ/LPrLD9/tVNdR/MPGuHgYkfbAS1o+9Qw2OjQWAZ4PT8CVVz+2nYKe2dbAgJ74+BmT8iVUD7vOEc9IZtLeSeNHI5SpR1YdXmRer3XxK70mtiVq8dvMLH1zGJpB3h3RDs+mtFLvb7079kALBq0gsMbjutEmz41FoeyPmX4eG5/bBytiQmN5ee5u9i5dK+uZGnwx4k72Nta8nG/pjg6WBH8IJaJgTtIepxE6epko6HRydGadcsC1Ot932tA3/cacPlaOGOnqeYtcnayZsbELtjamJOcksW1WxGMmLyZlNSC+Ty6daipMSHe8nn9AJj7zX4O/nFDZ/qOnL+Lg40lI7o3oZStJXcfxvHJ0l3qRFg3RxuUT82942xvzc8zB6jXP+pQj4861OPi7YcMX6Sa98bVwZo5wzthZ2VOUloWV4MfMXDOFpLTC/T1aFVTY0K8Hz7rDcDMdQfZe/KmzvQBHDl3F3sbS4Z3b0IpO0vuhsfx6ZKnNJay0ZhfyNnems2zCjQO6FiPAR1VGkcsUGl0cbDmq+GdsLN+rPHeIwbN3kLyU3OyvP9OTY0J8dZ+rtIY+IPuNR49p/oeh71XoHHs1wUaXUs98z06FK1x5PzHGh2t+WqEpsaPtWh8ekK8NU9p3HdCtxpLyhuSKvfGIZN0PSvXSzB9+nSWL1/Ol19+SZs2bdQ5MTExMRw7doyvvvqKTz75hJkzZ75Uve3kPfXQWoFAt+R0aWDoJuidTKeXi4q+icje8mQH2f+Dm++5oAl638fNh682IvQJfuUe6aSetwWDRmJmzZqFlZUVixYt4n//+x8ymaq/T5Ik3NzcmDJlCpMnTzZkEwUCgUAgELymGHyI9ZQpU5gyZQoPHjzQGGJdoUIFA7dMIBAIBALdIJJy9YPBnZgnVKhQoZDj8vDhQ2bMmMG6deuK+JRAIBAIBK8/Skk4MfrAoEOsX0RiYiIbNmwwdDMEAoFAIBC8hhg0EvPbb789d/v9+/f/o5YIBAKBQKA/RHeSfjCoE9O9e3dkMhnPGyD1JNlXIBAIBII3FcXr3fHxxmLQo+ru7s6uXbtQKpVal0uXLhmyeQKBQCAQ6ASlJNPJItDEoE5M3bp1uXjxYpHbXxSlEQgEAoFA8P8Xg3YnTZo0iYyMot9/UbFiRf7888//sEUCgUAgEOgekROjHwzqxDRv3vy5262srGjZsuV/1BqBQCAQCPSDQhI5MfpAHFWBQCAQCARvJK/NZHcCgUAgELytKEXMQC8IJ0YgEAgEAj0jcmL0g3BiBK8tFc5ZGroJemVh6W8N3QS9k6jMN3QT9E6y0sTQTdAredLb/yZy0P9brAX6QTgxAoFAIBDoGZHYqx+EEyMQCAQCgZ5Riu4kvSBcQ4FAIBAIBG8kIhIjEAgEAoGeEe9O0g/iqAoEAoFAoGcUklwnS0lYsWIFnp6emJub07BhQ86dO1ek7Y0bN+jRoweenp7IZDKWLVtWyGbmzJnIZDKNxdfXV8Nm+PDheHt7Y2FhgbOzM926deP27dsaNs/WIZPJ+OWXX15Km3BiBAKBQCDQM0rkOllelq1btzJhwgRmzJjBpUuXqFmzJv7+/sTGxmq1z8zMxMvLi/nz5+Pm5lZkvVWrViUqKkq9nDhxQmN73bp1Wb9+Pbdu3eLQoUNIkkT79u1RKBQaduvXr9eop3v37i+lT3QnCQQCgUDwlrJkyRKGDh3KoEGDAFi1ahX79u1j3bp1fPbZZ4Xs69evT/369QG0bn+CsbHxc52cYcOGqf/39PTkq6++ombNmoSGhuLt7a3eZm9v/9x6XsRrEYnJz8/n6tWrHDp0iEOHDnH16lXy8vIM3SyBQCAQCHSCQpLpZMnJySE1NVVjycnJ0brP3NxcLl68SNu2bdVlcrmctm3bcvr06VfSc+/ePUqXLo2Xlxf9+/cnPDy8SNuMjAzWr19PhQoVKFeunMa20aNH4+TkRIMGDVi3bh2SJL1UOwzqxCiVSqZNm4azszO1a9emY8eOdOzYkdq1a+Pi4sKXX36JUqk0ZBMFAoFAIHhlFMh1ssybNw87OzuNZd68eVr3GR8fj0KhwNXVVaPc1dWV6OjoEmtp2LAhQUFBHDx4kJUrV/LgwQOaN29OWlqaht3333+PtbU11tbWHDhwgCNHjmBqaqrePmvWLLZt28aRI0fo0aMHo0aN4rvvvnupthi0O+mzzz4jKCiI+fPn4+/vrz7QMTExHD58mC+//JLc3FwWLFhgyGYKBAKBQPBaMHXqVCZM0Jxh2MzM7D9tQ8eOHdX/16hRg4YNG+Lh4cG2bdsYPHiwelv//v1p164dUVFRLF68mF69enHy5EnMzc0B+PLLL9W2tWvXJiMjg0WLFvHpp58Wuy0GdWI2btzIpk2b8Pf31yj39PRk2LBheHh48NFHHwknRiAQCARvNEodzdhrZmZWbKfFyckJIyMjYmJiNMpjYmJeKQ/lWezt7alcuTLBwcEa5U8iRZUqVaJRo0Y4ODiwe/du+vbtq7Wehg0bMnv2bHJycoqt0aDdSWlpaZQuXbrI7e7u7mRkZPyHLRIIBAKBQPfoqjvpZTA1NaVu3bocO3ZMXaZUKjl27BiNGzfWmbb09HRCQkJwd3cv0kaSJCRJKjJ/B+DKlSs4ODi8VGTJoJGYVq1aMXHiRDZv3oyTk5PGtvj4eKZMmUKrVq3+k7YEBPam45A2WNtbcePkbb4dtZZHwUX3Gb47oj1dRrTH1dMZgLAbEfw0ezvnD15R2yz+YyY1W1XV+Nze1Yf5ZuRaALxqeNBnSneqNvPFzsmWmNBY9q4+wu5v9+tUW9dR/vSc2BVHN3tCroax4tN13DkfrNXWw68sAYG9qVTXCzdPF74fv57d32i2pzjaAao0qsygr/ri27AiSoWSkCuhTO0wh9zsXJ3qA3h0OJqH+yLJTcnDurwlFQMqYOttrdU2IyKT0B0RpD1IJyc+F+8PPSjbUfPHF7rzIWG7HmmUWbib02BxLfX63R/vk3Q9hdykXIzMjbCtZINX3/JYlrbQuT6A7buN2bzVmIREGZW8lfzv0zyqVtGeM3b/gYzV6024c1dOVIyccaNz6fuB5ssY1waZ8MMGzZcXepRTsm1jdqH6JAnGf2bG6XNGLJydQ8tmikI2r8rve0zYsc2MpEQZXt5KRn6ShY+vdn1hoXI2BZlx764RsTFyho3K5r0emufVTxvM2LxR82JYtpyCtUGFH4wkCaZPteTCeWO+DMykSTP9vLjy8K9G/L7dmJREGeW9JQaOzqWir/ZExoehMnZsMOH+PRnxMXIGjMyl0/uax33HRmN2btL8DkuXU/L1usI3CkmCBV+YcvW8ERNm5lC/qX7yDY/+Jmf/diNSEqGcl8SA0Qq8i9AYESpj10YjQu/JiI+R0W9EPh3e12zXro1G7PlJ8yWU7mUlFqwrPPhDkuDrL4z594KcsTPyqNv05ZJE30YmTJhAQEAA9erVo0GDBixbtoyMjAz1aKWPPvqIMmXKqPNqcnNzuXnzpvr/R48eceXKFaytralYsSIAEydOpEuXLnh4eBAZGcmMGTMwMjJSR1ju37/P1q1bad++Pc7OzkRERDB//nwsLCzo1KkTAL///jsxMTE0atQIc3Nzjhw5wty5c5k4ceJL6TOoE7Nq1So6deqEu7s71atX18iJuXbtGn5+fuzdu1fv7eg9uRvdP+nIwoHLiX4Qy8BZfZh3cBqDq44nL0f7KKn4iAR+nLqZR/eiQCajfUArAvdMYWSdSYTdjFDb7Vt7lA3Tt6rXczILLi6V6nqRHJfKggHfEfswnqpNfBi3ejhKhZJfVxzUibaWvZow/OsAvh25hltng3l/XGfmHfyCj33HkhyXWsjezNKMqAex/L3jNCOWDCyx9iqNKjPvwBdsmb+bFZ/+iCJfiVdNDyQ9JGrHno4nZHMYlT+ugI23NY8ORnNt/i3qL66FqV3hNwwrcpSYu5jh3NCRkJ/CiqzXsqwFNadWUa/LjDTffWJdwQqXJk6YO5mSl64gbFcE/86/RcNltZHJdfuelCN/GPHNShOmjM+lahUlv+wwYexkM7ZtzMLRobB9do6MMqUl2rTKY9kK08IGj/HyVLL86wKnxaiIFxb/ssMYfb765a8/jVmzypxPxmXj46tgzy5Tpk2xYm1QOvYOhW9E2dng5q6kWYs81qw0L7JeD08FcxdlqteL0rdnpynI9HvDO33ciE2rTRj8aR4Vqyg5sMuY+VPN+HpdNnZavsPcHHBxV9KwhcSmVUW/Kbusp5IvFhRcV+RFaDywy0jvb+85c1zOz6uNGPipAm9fJYd2GbHoc2MW/piHbREand0kGjRXsnl10W/LLuOhZMqCAseyqO/x0C65Xs/TV0EhGaZhvXv3Ji4ujunTpxMdHU2tWrU4ePCg+n4bHh6OXF4Q4YmMjKR27drq9cWLF7N48WJatmzJ8ePHAYiIiKBv374kJCTg7OxMs2bNOHPmDM7Oqgdbc3Nz/vnnH5YtW0ZSUhKurq60aNGCU6dO4eLiAoCJiQkrVqxg/PjxSJJExYoV1cPBXwaDOjHlypVTD60+c+aMOlu6QYMGzJ07l/bt22scXH3x3tjObJ6zk9O/XQBgQcBytkevpWn3+hzfekrrZ87svaixvn7aFt4d0Z4qjSprODE5mTkkxSRrrePQ+j811qMfxOLXuDJN32uoMyemx/h3OfDDMQ4FHQfgmxFraNipDv4ft2brgj2F7O9eCOHuhRAABs/rr7XO4mgfuSSA3d/t19hHxN3IVxekhYgDUbi/44JbS9WPo9LHFUi4kkT0X7GU71qmkL2tt7U6SnP/l6KHBcrkMkzti3YASrcuyPg3dwbPnmW5OPUa2XE5WLgWfWMtCVu2G9Otcz5dOqqexD+bkMups+b8fsCYgH6FowZ+vkr8Hkcxvl9T9M3ZyAhKOT5/33eDZWzeZsyG1dl06mFZchHPYfcOMzp2yqN9B9VDwyfjsjl/xpjDB03o1bdw5M7HV4mPr+rGvf6Hous1MgJHx+c7JyHBcnZuN+XblRn071m0s/Cq7NtpTOuOClp1UH2Hg8fmcfmsEccPGdOtT+Hv0NtHwttHVb7lx6Iv1UZysH/BdxgaLGPfDhPmrMhmZG/9RAoBDu6U06qjkhb+qnNv4FgFV8/J+euQnC59Cj/AePlIePmojse2dUU7MUZGL9YYFiLjwE4jApfn8Wmfon+3hqIkE9XpijFjxjBmzBit2544Jk/w9PR84TDnF82qW7p0afbvf36PQocOHejQocNzbYqDwSe7k8vl6qHVhsCtggul3B24fPSauiwzNZPbZ4Pxa+xTpBPzNHK5nBY9G2FuZcbN03c1trXu15w2/ZuTGJ3Mmb0X2Tx7BzlZRXenWNpakpaYXnJBT2FsYkzlul78Mn+3ukySJC4d/Re/RpV1sg9t2u2dbanSqDLHfv6HZSe+orS3Kw9vR7Ju2hZunLz9ghpfDmW+krQHGRrOikwuw6GaHan3Xu04ZsVkc3r0ReQmcmwrWVOhd3nMnbT31SqyFUT/FYe5sxlmpXR7Ac3Lg9t35QT0L7jRyeVQv46Sazde7cL48JGMzh+YY2oK1f2UjBqah5trwQUsOxu+/MqMSWPzXujslJS8PLh3V06vvk9FE+RQq04+t24WfWMrDo8eyenfyxpTU/D1UzBocDYuz+hbMMeC0Z9mv9DZeRXy8+DBXRnd+hR0B8nlUK2Ogns3X+07jI6UMbK3OaamEpX8lPQZnI+TS4GWnGxYPs+UQZ/kvtAReBXy8yD0nowuz2j0q60k+JYcKHkUNvqRjE/7mGBiChWrKOk5WIGTS8H2nGxYOc+Yj8bk61Wj4PXD4E4MwLlz5zh9+rQ6EuPm5kaTJk3UswbqE0c3e4BC0ZKkmGQcXO2f+1nPauX59tQcTM1NyErPJvD9RYTfKojC/LHlBLFhccRHJuFVozxD5n9IucqlCfxgsdb6/BpXplXvJkx7V/uY/5fFzskGI2MjkmJSNMqTYlMo51s4QvEyPE+7u5cqQvHRjF6smbSR4CuhtPuoJQuPTmdY9QnPzTV6WfLS8kEJJs90G5nYmpAZmVXiem28rfEd7o2Fuzm5yXmE7Yrgyqwb1FtQE2OLghvroyPR3N8SjjJHiYW7OTWmVkFurNsnruQUGQqlDMdnulUcHSTCwku+r6pVFEyfoqR8OSUJCTJ+2GjC8LFm/LwuG6vHAZelK0yoUVWplxyYJ6SmyFAqZTg8o8/BQSLiYcmdGB9fBf+bnEXZskoSE2Vs3mjGpHFWrPwxHcvH+tZ8b45fVQWNm+onB+YJqSmgVMoKdRvZOUhEPiz5d1jRV8mIibm4l5NITpCx8ydjAsebsnBtDhaPNW5aZUJlPyX1muh3zq20VJXGZ7uN7Bwg6mHJ6/X2VTJskhK3spCcCHt+MmLOBBPmrslTa/x5lRGV/JTUbfL65sCU9L1HgudjUCcmNjaWHj16cPLkScqXL6+REzN+/HiaNm3Kzp071X1o2sjJySmU7ayUFMhl2i9+rfs1Y9yq4er1V3EYIu5EMqL2JKzsLGn+QSMmBY3hf61mqG/m+9ceVduGXg8nMSqZRcdm4O7lStR9zSFvnlXLEbhnCptmbefikX9L3Kb/iudpf5IPsm/NEXU3VsiVUGq3ro7/x61Z9/nPBmx58ShV66krcXlVF9SZsZeJO5uAe6uC89G1qRMO1e3ITcojYn8UN7+9R+0ZVZGbvv4XrCYNC25qlbwlqvrl0K2PBcf+NKJrZwV/nzTiwmUjNq0tnOj7JlC/YYFjUsEbfKpkEtDPhn+Om+DfKY8zp4y5esWI5avf3BGQtRoUfIceXhIVq+TySX9zzvxlxDsdFVw4JefGZTnzVhU9IuR1p2aDAsekvBd4++Yz4UMTzv0lp2VHJZdOy7h5Rc7sla/3LO/K1zVZ5w3HoE7MqFGjUCgU3Lp1Cx8fH41td+7c4eOPP2b06NFs3769yDrmzZtHYGCgRlkFquBNVa32p3+7wO2zBSNzTMxUh8DB1Z7E6GR1uYOrPSFXQ5/b/vy8fCJDVFGFe5fu41PPm/fGduKbEWu02t8+ew+AMhXdNJyY8lXKsvDodPavPcrPc3Y9d58vQ0p8Gop8BQ6udhrlDi52JD2ltSQ8T3tilKrup3ODAMJvPcKlnNOzVb0SJjbGIIe8FM0LWF5qHqZ2uuvWMbYyxtLdnKxozRu6saUxxpbGWLpZYFvJmpPDLhB/IRGXJrrTaW8nYSSXSEzSvAgmJsl02gViYw3lyyp5GCkHFFy4LOdRpIy272rmUHw2w5Ra1ZWsXKabG6OtnYRcLpH0jL6kJBkOjrqLHlhbQ5mySiIjVQ7mlctGREXK+aCrjYbdnEALqlZXsHBJprZqSoStHcjlEilJmuUpSTKticslxcpaNXInOlJ1LG9cMSImSsbg7po5WktnmeJbTcn0r3U3UtDGVqUxtZBGsNNhF4+VNbiVlYh5rPHmFTmxUTDiPc1o7LezjfGpJvH5Yv1G2YqLiMToB4M6MYcOHeLvv/8u5MAA+Pj48O23375wiLW22QvfsxtYpH1WejZZ6ZrdGQlRSdRuU03ttFjaWODbsCK/rzpULB1PkMnlmJoWnRjoXctTvb8nePiVZdGxGRze+Bfrp215qf29iPy8fO5evE/tNtU59et5VRtlMmq3qa6zxOEnPK09OjSW+EeJlPXRnAOobGV3zh+8rNP9yo3l2FSwIulGCk71VFdKSSmRdD2VMu1dX/Dp4qPIVpAVk41L0+c4J5JqUebpNmxvYgK+lZWcvyRXd+solXD+kpye7+nuAp2ZBY8i5XRsp9pHQL88unXWrL/fxxaMG5VH8ya6614yMYFKlZVcuWysHtqsVMKVy8Z07a67m2xWFkRFymnTVuU09OqbS4dOms7vyCHWDBuZQ8PGun2qNzaBCpUlrl82Ug9tVirhxmUj2nfT3XeYnQUxUTKaP3Zuu/XJo3VHzfonDzPnoxF51Gmk2/PU2AQ8K0ncuCKnbtOC8/TmFTltu+rufMnOgtgoGU3bqNr/bm8FrTpoavl8uAn9hyuorWONgtcPgzoxZmZmpKYWHub7hLS0tBdOeqNt9sKiupKKYvc3++j3RQ8e3Ysm6kEsA2f1JiEyiZN7zqttFh6Zzsk959Q3/4/n9uP8gcvEhsdjYWNB637NqNnKj6kd5gCqvJDW/Zpxbv9lUhPS8KrhwYglAfz7100eXFONiPGsWo6Fx2Zw8dBVdi7Zq87BUSqUpMQXfVxehp1L9zI5aDR3L4Rw51ww743rjLmVmXpk1OSgMcRHJqq7eIxNjPHwKwuAiakxTmVK4V3Tk6z0bHXk5UXaAbYt/pWAmb25fzWMkCuhtAtoSTnfMszq+bVOdD1N2Y7u3F4dgk0F68dDrKNQ5ihwa6ka7nd7ZTCmDqZ49SkPqJKBMyNU+TJSvkROUi7poRkYmRth4aZ6Yg3ZHEapOg6YO5mSk5RH6E5VN9mTCEtWbDZxpxNwqGGHiY0JOYm5PPw9ErmpHMdaWsaSviJ9e+Yza74pVSor8aui5JcdxmRny3i3g+oGNXOuKc7OEqOHqm6+eXnwIEz1pJqXD3HxMu4Gy7CwgHJlVDe4b1aa0LyxAjc3ifh4GWuDTJDLoX0bVZ2lHKGUlkiPm6tEaXfd5h6890EOXy+woFJlhWqI9U5TcrJltPNX6Vk835xSThKDhuSo9YWHqZ5s8/MhIV5GSLAcCwuJ0o/1rV1lRsPG+bi6KklIkPNTkBlyuUTL1qo6HR0lrZEsZxclbjrWB9C5Rz4rF5rgVVlJRR8lB3Ybk5MNLf1Vx/v7BSY4OEn0Haxaz8+DiMffYX6ejKR4GaHBMswtwO2xxp9WG1OnkRJnV4mkBBnbNxojl0OTd1ROg70j2GvRWMpFwkUPGjv0ULJ2kREVKkl4+So5vMuInGzUo5VWLzTCoRT0GqxQa3wULlP/nxQvIyxEhrm5hOvjtL0ta4yo3UhJKRdV3s+ujUbI5dDoHeULNToXPffaf87LTlQnKB4GdWJ69+5NQEAAS5cupU2bNtja2gKQmprKsWPHmDBhQpHTE+uSrQt/xdzKnHGrh2Ntb8n1E7eZ2nGOxhwx7t6u2DoVhJ3tXeyYvGEMju4OZKRk8uDfMKZ2mMOlo6p8lvzcfOq0qcH7Y1VOQ9zDBP7ZdZafv9qprqP5B41wcLGj7YAWtB3QQl0eHRrLAK/ROtH217ZT2DvbEhDYGwc3e0KuhPJ5xzkkx6qSfV3KOyEpCy4ApUo7sOryIvV6r4ld6TWxK1eP32Bi65nF0g6w+5v9mJqbMmJJADaO1ty/GsaU9rML5QLpApfGTuSl5RO646FqsjsPS6pP8VV3J2Un5GjMHZGblMvFLwpGo0XsiyJiXxR2VWyoNU3VDZmTmMut5ffIS8/HxMYEOx8bagdWw9RWFW2Sm8hJuZNGxMFo8jPyMbUzwc7Xhtozqmqdm+ZVaddaQXJKHmuCTEhIlFHZW8myBTnqEUMxsTKeno0gLkHGgKEF3UCbt8rZvNWEOjUV6m6g2DgZX35lSkqqDHs7iZrVlfy4IhsHe503/4W0fCeflJRsfgoyIzFJhre3ktnzM3F4fHOKjZUjkxU8VScmyBgzvGAyw53bzNi5zYzqNfPV3UDxcXIWzLEgNVWGnZ1E1WoKli7PwN7eMMmfjVspSE2GHRuMSU6S4eEt8dncHOwf+7zxsTJkT52nSQkypo4s6Abau92EvdtNqFJDoe4GSoyX8d1cU9LTVF1WPtUUzP42B1v7/07X0zRqpSQtRTVBXUqSEeW9JCbNyVcnNCfEypA9NR9PUgJ8ObLg93JghxEHdhjhW0Op7gZKjIPv5xqTngY2dlC5qpLp3+QbTGNJURponpi3HZn0su+91iE5OTmMGzeOdevWkZ+fr367ZW5uLsbGxgwePJilS5e+9Mut2sl76qO5gv+YCuf0MyfJ68LC0n8Yugl6J1H5euQj6JNkpf7mlnkdyJNebZj7m0BDjwd638fy2611Us8Y37f/uvEyGLw7aeXKlSxYsICLFy9qDLGuW7euOjIjEAgEAsGbjOhO0g+vxTwxtra2vPPOO4ZuhkAgEAgEekFXb7EWaGLwo5qVlcWJEyfUL5x6muzsbDZu3GiAVgkEAoFAIHjdMagTc/fuXapUqUKLFi2oXr06LVu2JDKy4P06KSkp6jdtCgQCgUDwpqJAppNFoIlBnZgpU6ZQrVo1YmNjuXPnDjY2NjRr1ozw8KJfyicQCAQCwZuGUpLrZBFoYtAjcurUKebNm4eTkxMVK1bk999/x9/fn+bNm3P//n1DNk0gEAgEAsFrjkGdmKysLIyNC3KLZTIZK1eupEuXLrRs2ZK7d+8+59MCgUAgELwZiO4k/WDQ0Um+vr5cuHCBKlWqaJQvX74cgK5duxqiWQKBQCAQ6BTRFaQfDHpU33vvPbZs0f6+oOXLl9O3b18MOBefQCAQCAQ6QSHJdbIINDHoEZk6dSr79+8vcvv333+PUile4CUQCAQCgaAwr8VkdwKBQCAQvM0oRT6LXhBOjEAgEAgEekZ0BekHcVQFAoFAIBC8kYhIjOC1ZbTL2/22Vlu5haGboHf+yn6730QOEJrrZOgm6JWct/wt3QAN/4N9KCXRnaQPhBMjEAgEAoGeEW+x1g/iqAoEAoFAIHgjEZEYgUAgEAj0jOhO0g/CiREIBAKBQM8oRceHXhBHVSAQCAQCwRuJiMQIBAKBQKBnFKI7SS8IJ0YgEAgEAj0jcmL0g3BiBAKBQCDQM+It1vrhtXBi8vPzuXHjBtHR0QC4ubnh5+eHicnbP8mSQCAQCASCkmFQJ0apVDJ9+nRWrFhBSkqKxjY7OzvGjBlDYGAgcrnwYAUCgUDw5qIQL4DUCwZ1Yj777DOCgoKYP38+/v7+uLq6AhATE8Phw4f58ssvyc3NZcGCBYZspkAgEAgEr4TIidEPBnViNm7cyKZNm/D399co9/T0ZNiwYXh4ePDRRx8JJ0YgEAgEAkEhDOrEpKWlUbp06SK3u7u7k5GR8Z+0JSCwNx2HtMHa3oobJ2/z7ai1PAqOLtL+3RHt6TKiPa6ezgCE3Yjgp9nbOX/witpm8R8zqdmqqsbn9q4+zDcj1wLgVcODPlO6U7WZL3ZOtsSExrJ39RF2f7tfp9q6jvKn58SuOLrZE3I1jBWfruPO+WCtth5+ZQkI7E2lul64ebrw/fj17P5Gsz3F0e7gas+whQOo064GFjbmRNyJ5Oe5uzix66xOtT3h4K/G/L7dmOREGR7eSj4enUdFX6VW24ehMrZuMOHBPTlxMXICRubS+f18DZttG03YsUkzJ6t0OSXL1mUXqk+SYN4XZlw5b8TEmTk0aKrQnbCn2Lwb1v0C8Yng6w1fjIUaVbTb3nsA362DG3chMlrGZ2MkAnpq2ixfDyuCNJ8OK5SX2L+pcH2SBMMnwz/nZHz3lUTb5joS9RSnfs/nrx35pCVJuHvJ6DbSlPI+2ruSo8OUHN6Ux6N7EkmxEl2GmdD8Pc3L2eGf8ji6WfN7dS4rY9Ja80L1SZLEuum53Lmg5KMvTanWxEh3wp7i2r40ruxJIzNJQSlPU5oPs8e1splW28TwPM79nEJcSC5psQqaDranZlcbDZtzW1K48EuqRpl9GWP6fe+uXj/+fSIRV7PJSFRiYi7DzdeUxgH2OJTVT87hzf0pXNuTQlayAkdPUxoPKYVz5cLHHCApPJdLWxKJD8klPS6fhh+XoloXOw2bS78kcnlrskaZXRkTPlheTr1+YmUckVezyExSYGIuw8XHnPofOWJf1lTn+kqKSOzVDwY9qq1atWLixInEx8cX2hYfH8+UKVNo1aqV3tvRe3I3un/SkW9GruGTRlPJzshh3sFpmJgV/SOPj0jgx6mbGV1vCqPrf8aVP68TuGcKHn5lNez2rT1KL/eh6mXt5J/U2yrV9SI5LpUFA75jSLXx/Dx3Fx/P7Ue30R10pq1lryYM/zqAn2ZtZ2TdKdz/N4x5B7/A3tlWq72ZpRlRD2L5cepmEqKSSqx9yoYxlPUpzfRuCxhW43+c2H2WaVsn4F3LU2fannDquBEbV5vwwYd5LFiZjYeXxJypZqRobz45OTJc3SX6Dc7D3lEqst5ynkrWbM1UL7OWFnZgAPbtMtZ7b/f+P2DBChgdADvXgo83DJ0ICUVozM6GcqVhwjBweo7GihUk/t5VsGz+Trvdhu2gT5FX/srn9zV5tO1vzNjvzHCvIOfHaTmkJ2tve142OLrJ6TjIGBuHout19ZDx5WZz9TJqsXaH4Z89+nE8n+beP5mcXJdMvd629FzihlMFE/bOjCMzWfu+83KU2Loa02iAPZYORV+qHcsbMzCotHp5b76LxnZnb1Naf+pI3+VudJnpDBL8PiMOpaLo86Kk3D+Rztn1CdTu7UC3r8vg6GnKwVnRZBWhMT9HiY2rCfUGOGLhULTjaF/OhL7ryquXd+dqPvw6eZvR/BNnenxXFv/pKgfuYGCUXjSWFCUynSwlYcWKFXh6emJubk7Dhg05d+5ckbY3btygR48eeHp6IpPJWLZsWSGbmTNnIpPJNBZfX18Nm+HDh+Pt7Y2FhQXOzs5069aN27dva9iEh4fTuXNnLC0tcXFxYdKkSeTnaz54vAiDOjGrVq0iMjISd3d36tSpQ8eOHenYsSN16tTB3d2dyMhIVq5cqfd2vDe2M5vn7OT0bxd4cC2cBQHLKVXagabd6xf5mTN7L3LuwGUeBUfz6F4U66dtISs9myqNKmvY5WTmkBSTrF4y07LU2w6t/5Pvx63n379vEv0glmOb/+Fw0J80fU93L4bvMf5dDvxwjENBxwm/FcE3I9aQk5mL/8ettdrfvRDC2smbOL71FHk5eSXW7tfEh1+XH+DO+WCiH8Ty85xdZCRnULmul860PWHvTmPadMznnQ4KynpIDB2bi6mZxJ+HtAcaK/ooGTAsj6bvKDAxKfoiJ5eDvWPBYmtX2CY0WMbeHcaMnJijKzla2bANer4L73eCip4w839gbg67igjaVa8Ck0ZC5zZg+pyHUWMjcC5VsDjYF7a5dQ+CtsGcKbpQop1/dufTsKMR9dsb4+oh5/1PTDAxg/OHtV/QyvnIeXeICbVaGWNsUvSFXW4ENo4y9WJlV9g2MkTJPzvz6DVev0/tV39Nw6+9NVXaWuNY3oSWIx0wNpNz+6j2aLNrJTOaDLKnUgtLjJ6jUWYkw9LBSL1Y2Go6A1X9rSld1RxbV2OcvU1p8KEd6fEK0mJ177hd/y0Fn3a2VG5jg0M5U5qOcMLYTMbdY2la7Z0rmdNgYCm8m1tjZPy871GGpYOxejF/RqNve1vcq1pg42KCk7cZdfs5kBGvID325W6IbyNbt25lwoQJzJgxg0uXLlGzZk38/f2JjY3Vap+ZmYmXlxfz58/Hzc2tyHqrVq1KVFSUejlx4oTG9rp167J+/Xpu3brFoUOHkCSJ9u3bo1CozjuFQkHnzp3Jzc3l1KlTbNiwgaCgIKZPn/5S+gzanVSuXDmuXr3KoUOHOHPmjHqIdYMGDZg7dy7t27fX+8gktwoulHJ34PLRa+qyzNRMbp8Nxq+xD8e3nnphHXK5nBY9G2FuZcbN03c1trXu15w2/ZuTGJ3Mmb0X2Tx7BzlZuUXWZWlrSVpieskFPYWxiTGV63rxy/zd6jJJkrh09F/8nnG2SkpR2m+eukPLXk04u+8S6ckZtOzVGBNzE64ev6mT/T4hPw/u35XTvU/BxUouh+p1lNy9+WrnTnSkjOG9zTExhcp+SvoNzsPJpcDpycmGb+aZMfiTPOwdX2lXzyU3T9UtNLR/QZlcDo3rwpUbr1Z3WAS0eB/MTKFWVRg/DEq7FmzPyoZJs+HLcSonRx/k50k8uifxTq+CG5NcLqNSLSPCbmnvEiwu8Y8kZvfPwsRURnlfVeTGwaXgvMjNlvh5QS7dR5ti46i/UJMiTyIuJJc6HxR0B8nkMsrWNCP6zqs5wCmR+QQNfISxqQxXHzMafWSHjbP2S3tetpLbRzOwdTXC2km3XWaKPIn4kBxq9LBXl8nkMkrXsCD2jvYoZnFJjcpjy8dhGJmquorqfeiI9XM03v0jDRtXY6ycXotZRADDzdi7ZMkShg4dyqBBgwBV8GDfvn2sW7eOzz77rJB9/fr1qV9f9QCvbfsTjI2Nn+vkDBs2TP2/p6cnX331FTVr1iQ0NBRvb28OHz7MzZs3OXr0KK6urtSqVYvZs2czZcoUZs6cienznr6ebkexrPSIXC5XR2AMgaObPQBJMcka5UkxyTi42j/3s57VyvPtqTmYmpuQlZ5N4PuLCL8Vod7+x5YTxIbFER+ZhFeN8gyZ/yHlKpcm8IPFWuvza1yZVr2bMO3dea8iSY2dkw1GxkYkxWgOX0+KTaGcb5lXqvtF2mf3XsK0X8azK2E9+Xn55GTmEvj+IiJDis4zKgmpKTKUShn2DpoRFXsHiciHJXdiKvkqGDVRSelySpISZOz4yYTp4834em02FpYqmw2rTPDxU1K/iX67IpJTQKGQUeoZjaUc4EF4yeutUQXmfgYVykNcAqwIgg8/gd+DwOqxxvnLoVY1aNOs5Pt5ERmpoFRSqFvI2kFGbETJnZjyPnJ6/88U57IyUhMljm7OZ+WkXCasNMPcUnVD+X1NHh5+cqo21k8OzBOyU5VISrC019yPhb0RSREljxa4Vjal9VhH7MsYk5mo4PwvqeyeGkufb90wtSw4/6/vT+PUhhTysyXsyxjTJdDludGdkpCdpkBSgoVdYY0pj7RHdYuDcyVzWnxiil0ZEzKTFFzemsTeLyJ5/5uymFoUaLx5IIXzGxPJz5awK2NChxnuOtf4KhgiJyY3N5eLFy8ydepUdZlcLqdt27acPn36leq+d+8epUuXxtzcnMaNGzNv3jzKly+v1TYjI4P169dToUIFypVT5TKdPn2a6tWrq0clA/j7+zNy5Ehu3LhB7dq1i9UOgzsxAOfOneP06dMak901adJE7Q0+j5ycHHJyNJ9klJICuUz7Ral1v2aMWzVcvf4qDkPEnUhG1J6ElZ0lzT9oxKSgMfyv1Qz1zXz/2qNq29Dr4SRGJbPo2AzcvVyJuh+jUZdn1XIE7pnCplnbuXjk3xK36b/iRdoHzu6Dlb0Vk9sGkhKfRpPu9Zm2dQLjW0wn9Por3Hn/I2o3KLh5enhJVKqSw6j+Fpz+y4jWHRVcOGXE9ctGLFz1ak+YhqRFo4L/fbxVTk2b3nDgT/igM/xxEs5cgl0/GK6Nr4Jv/YJrgHsFlVMzLyCbf/9R0MDfmBtnFARfVTJuufY8mTcBj7oWBSue4FrZjE1DIwk+mYlfO2v1pkotrShby5zMJAVXdqdxeFE87813xdj09bnJF0W5upbq/x09wbmyGVuHhfPgZDo+bQty+yq2sKFMTUsyk/K5/msKfyyO4d15pTE2fbsSarXd88zMzDAzK3wex8fHo1AoNBwFAFdX10L5KS9Dw4YNCQoKwsfHh6ioKAIDA2nevDnXr1/HxqYg2vj9998zefJkMjIy8PHx4ciRI+oIS3R0tNZ2PdlWXAzqxMTGxtKjRw9OnjxJ+fLlNeaJGT9+PE2bNmXnzp24uLgUWce8efMIDAzUKKtAFbypqtX+9G8XuH22YGSOiZnqEDi42pMYnawud3C1J+Rq6HPbn5+Xr44s3Lt0H5963rw3thPfjFij1f722XsAlKnopuHElK9SloVHp7N/7VF+nrPruft8GVLi01DkK3Bw1UzmcHCxI+kprSXhedrdvVzpPqYjQ6qNJ+ymyqm5/28Y1ZtVodtof/XoLF1gaychl0skJ2lejJOTCkdnXgUrayhdVkl0pBxQcP2KnJgoGQO7W2jYfT3LlCrVlMz8Wnc5MvZ2YGQkFUriTUgCJx12Y9nagGdZCH+kWj9zCR5GQsN3Ne3GToe6NWDjN7rZr5Wtqnss7Rl96UkSNg66u8laWMtwKiMjIVJ1XoRcUZAYJTHjA01HdNOcXCpUlTNioe6cG3NbOTI5hZJ4s5IVz03afVnMrOXYlTYmJUozumNmJcfMSo59aRNcK5vxY/9HPDiTSaUWVjrbt7mNETI5ZKUU1mhhr7tIl5mVEXalTUl9RqOplRxTKzl2pU1wqWzOTwNCCTubiXdz6yJq+m/R1Twx2u55M2bMYObMmTqpvzg83XNSo0YNGjZsiIeHB9u2bWPw4MHqbf3796ddu3ZERUWxePFievXqxcmTJzE31z5arSQY1IkZNWoUCoWCW7du4ePjo7Htzp07fPzxx4wePZrt27cXWcfUqVOZMGGCRtl7dgOLtM9KzyYrXdPLS4hKonabamqnxdLGAt+GFfl91aGX0iOTyzE1LXpE05OROU+P+vHwK8uiYzM4vPEv1k/b8lL7exH5efncvXif2m2qc+rX86o2ymTUblOdX1cc1Om+ntZuZqm6+EtKTSdCqVAi03GOk7EJeFVWcv2yXD20WamE65fldOimu6S+7CyIjpLT3FG1j+598mjdUbP+icMsCBiRR71Guu1eMjWBqpXhzEXUQ5uVSpWT0f893e0nI1PltHR97BgN7aeKyDxNt0Hw2Wh4p6nu9mtsIqNMJRnBVxTqoc1KpUTwFQVNuuruEpWTJZEQJVGnjepm8k4vExp00Kx/ycgcugwzwa+hbs9TIxMZzt6mPPo3B69GqsiCpJSI+DeH6p10d5PNy1KSGq3AqtULnAYJFCXv4dGKkYkMJ28zov7NwrOhyjmSlBKR17Lw66glK76EqDTmUbHl84+bJKnydF4XSjqy6Fm03fO0RWEAnJycMDIyIiZGM/IfExPz3HyWl8Xe3p7KlSsTHKw5dYednR12dnZUqlSJRo0a4eDgwO7du+nbty9ubm6FRkk9aefLtM2gTsyhQ4f4+++/CzkwAD4+Pnz77bcvHGKtLYxWVFdSUez+Zh/9vujBo3vRRD2IZeCs3iREJnFyz3m1zcIj0zm555z65v/x3H6cP3CZ2PB4LGwsaN2vGTVb+TG1wxwA3L1cad2vGef2XyY1IQ2vGh6MWBLAv3/d5ME1VXeKZ9VyLDw2g4uHrrJzyV51Do5SoSQlXnPuh5Kyc+leJgeN5u6FEO6cC+a9cZ0xtzLj0Po/AZgcNIb4yETWff4zoEoGfjJU2sTUGKcypfCu6UlWerY68vIi7Q9vP+LRvSjGrhrGmkmbSE1Io2n3+tRpV4Mvu8zXia6nebdHPisWmuJVWUlFHyX7dxuTky2jlb/KyVi+wBRHJ9WQalAlA0eEydT/J8bLCA2WYW4BbmVUF72Nq02o10iBk6tEUoKMbRtNkMuh2TuqOlUjlgpfIJ1cJFzcdX/hDOgFU+dBNV+o7gsbd0BWFrz3+IFoyhxwdVYNqQZVMnBIqOr/vDyIjVeNMrK0AI/HI+EXfg+tmkAZV4hNUM0rI5dD57aq7U9GLD2LuyuUdS9c/io0f8+YbV/nUbZSPuV85JzYk09uDtRrp7pE/bI4F7tSMjoOUjnK+XkSseGq45yfL5GSIBEZosTUApxKqxyQvWvzqNJQjoOrjNQEiSM/5SOXQ62WquvDkxFLz2LvLMPRTfddEDW72fDHNwk4VzTFpZIp//6eRn62Et+2qhv+0aUJWJUyovFH9oDqBpz0ME/9f0aCgvj7uZhYyLBzVx2Hk+uT8axvjo2zMRmJCs5vSUEmh0otVI5SSnQ+wScyKVfLHAs7OenxCi7vTMXITEb5urp7Gn5Cta52/P1tHE7eZjhXMuP6XlUeTuU2Kofjr29isXQ0pv4AR7Wu5AjVQAdlvkRmQj4JD3IwMZdj+1jj2aAEytezxNpFlfdz6Zck5HLwehxhSY3O48HJdMrUssTc1oiMhHz+3ZWMsamMcnUstbTSMOgqElNU15E2TE1NqVu3LseOHaN79+6qdiiVHDt2jDFjxuikPQDp6emEhIQwYMCAIm0kSUKSJHVXWOPGjZkzZw6xsbHq3pYjR45ga2uLn59fsfdtUCfGzMyM1NSib9ZpaWnF/rJeha0Lf8Xcypxxq4djbW/J9RO3mdpxjsYQY3dvV2ydCvr67F3smLxhDI7uDmSkZPLg3zCmdpjDpaOqfJb83HzqtKnB+2NVTkPcwwT+2XWWn7/aqa6j+QeNcHCxo+2AFrQd0EJdHh0aywCv0TrR9te2U9g72xIQ2BsHN3tCroTyecc5JMeqkn1dyjtpRExKlXZg1eVF6vVeE7vSa2JXrh6/wcTWM4ulXZGv4IvOcxk8rz+zf5uCubU5kcHRLBq4gnMHLutE19M0aaUgNTmPbRtMSE6S4emt5PO5Odg/ThSNj5Uhe+r6kZggY/LIgm6g37fL+X27CX41FOpuoMR4Gd/MNSUtTYatnYRvNSVzvs3G1l7nzS8WnVpDUjJ8u0412V2VirBmUUF3UlSsygF5Qlw8vD+kQPS6X1RL/VqSuhsoOg4mzoLkVHC0hzrV4ZeVqv//a2q1NCYjBQ7/lE9aokRpbxmDZ5upu5OSYyWN7zA1UWLZmIIuu7935vP3zny8qhd0A6XEq0YeZaaCtR14VjVizFIzrO0NkwdSqbkl2akKzv2cQmaSAqcKprw7w1md7Jser0D21HeYkahg2/iCJ+gre1QT5ZWuZkb3OaqLfkZ8PkcWJ5CdpsTCzgj3Kqb0WOiqTq41NpERdTOHf39LIydDZVO6qhnvz3cplGSsC7yaWZOdquDiL0lkJeVTqoIZ/tPdsLBX3WrS4/I1vsfMpHz2THikXr/2awrXfk3Brao5nb9SzQWTkZDP8SWxZKcpMLczwrWKOV3ml1FrNDKVEX0zm+u/p5KbocDCzgi3qha8O7+0Trux3lQmTJhAQEAA9erVo0GDBixbtoyMjAz1aKWPPvqIMmXKMG+eKj80NzeXmzdvqv9/9OgRV65cwdramooVKwIwceJEunTpgoeHB5GRkcyYMQMjIyP69u0LwP3799m6dSvt27fH2dmZiIgI5s+fj4WFBZ06dQKgffv2+Pn5MWDAABYuXEh0dDTTpk1j9OjRL3Xfl0mSZLB42+jRo9m3bx9Lly6lTZs22NqqkrRSU1M5duwYEyZM4N133+W774qYgasI2sl7vthI8NqzOPSMoZugV6qbWrzY6A3n98zX50lYX4TmOhm6CXolR6mfmX1fJyb7HdD7PnqfHqGTerY2XvXSn1m+fDmLFi0iOjqaWrVq8e2339KwoWo+slatWuHp6UlQUBAAoaGhVKhQoVAdLVu25Pjx4wD06dOHv//+m4SEBJydnWnWrBlz5szB29sbgMjISIYMGcLFixdJSkrC1dWVFi1aMH36dI2el7CwMEaOHMnx48exsrIiICCA+fPnY2xc/PiKQZ2YnJwcxo0bx7p168jPz1dnLefm5mJsbMzgwYNZunTpS0djhBPzdiCcmDcf4cS8+QgnRjf0PDVSJ/Vsb6L/CWDfJAzenbRy5UoWLFjAxYsXNYZY161bVx2ZEQgEAoFAIHgWgw+gv3XrFjt37sTd3Z2+fftSu3Zttm3bxrhx4/jjjz8M3TyBQCAQCF4ZQ7476W3GoJGYgwcP0q1bN6ytrcnMzGT37t189NFH1KxZE6VSSfv27Tl8+DCtW2t/z49AIBAIBG8CuhqdJNDEoJGYWbNmMWnSJBISEli/fj39+vVj6NChHDlyhGPHjjFp0iTmz9f9kFyBQCAQCARvPgZ1Ym7cuMHAgQMB6NWrF2lpaXzwwQfq7f379+fff1//KfgFAoFAIHgeSkmmk0WgicHfnSR7PGmAXC7H3NwcO7uCmR1tbGxISUkp6qMCgUAgELwRCAdEPxg0EuPp6cm9e/fU66dPn9Z4C2Z4eDju7jqeGlQgEAgEAsFbgUEjMSNHjkShKHjPTLVq1TS2HzhwQCT1CgQCgeCNR0Ri9INBnZgRI54/g+HcuXP/o5YIBAKBQKA/xPBo/WDwnBiBQCAQCN52RCRGPxh8sjuBQCAQCASCkiAiMQKBQCAQ6BkRidEPwokRvLY4GuUbugl6JTw/zdBN0Dvb4loaugl652G6vaGboFfyFEaGboLemeyn/30IJ0Y/iO4kgUAgEAgEbyQiEiMQCAQCgZ4RkRj9IJwYgUAgEAj0jCScGL0gupMEAoFAIBC8kYhIjEAgEAgEekZMdqcfhBMjEAgEAoGeETkx+kF0JwkEAoFAIHgjMXgkJj8/nxs3bhAdHQ2Am5sbfn5+mJiYGLhlAoFAIBDoBpHYqx8M5sQolUqmT5/OihUrSElJ0dhmZ2fHmDFjCAwMRC4XwSKBQCAQvNmI7iT9YDAn5rPPPiMoKIj58+fj7++Pq6srADExMRw+fJgvv/yS3NxcFixYYKgmCgQCgUCgE0QkRj8YzInZuHEjmzZtwt/fX6Pc09OTYcOG4eHhwUcffSScGIFAIBAIBFoxmBOTlpZG6dKli9zu7u5ORkbGf9gigUAgEAj0g+hO0g8Gc2JatWrFxIkT2bx5M05OThrb4uPjmTJlCq1atfrP2hMQ2JuOQ9pgbW/FjZO3+XbUWh4FRxdp/+6I9nQZ0R5XT2cAwm5E8NPs7Zw/eEVts/iPmdRsVVXjc3tXH+abkWsB8KrhQZ8p3anazBc7J1tiQmPZu/oIu7/dr1NtXUf503NiVxzd7Am5GsaKT9dx53ywVlsPv7IEBPamUl0v3Dxd+H78enZ/o9me4mh3cLVn2MIB1GlXAwsbcyLuRPLz3F2c2HVWp9qe8OseE7ZtNSMxUYa3t5Ixn2ThW0Wp1Tb0gZygIDPu3TUiJkbOyFHZ9PggV8NmQ5AZmzaaaZSVK6dg/YbCjrUkwedTLTl/zpjAWZk0baafF1f+tseEHdtUGr28lYz6JAtf3yI0hsrZGGRG8GONw0dl834PTY2bNpjx0zMay5ZT8GOQdo3Tplpy4bwxMwIzaaIHjbFHI4ne/5C8lFwsy1lTboA31t62Wm2zIjJ4tCuMzNA0cuNzKNfPC9cOZTVsHu0KJWpPuEaZubsF1RbUV6+Hrr9L2o1kcpNyMTI3wrqiLWV6V8CitKXO9QG8V7YJfcq3xNHUhpD0KL65u4dbqQ+12npauTLYy5/KNmVwt3Dku7u/sv3hCQ2bQRXaMcirvUZZWEYsA84sUq9P9O1BXYdKOJnZkqXI4XpKGKuC9xGeGad7gUCPco3o79kSR1NrgtOjWHLrN26mRmi1rWDlwtCK7fG1LYO7hQPLbv/O1vCTGjaDvdsyxLutRllYRix9Ti5Rr0+p8h71SlXE2cyWTEUO15LD+f7uAcL0pLEkSJKhW/B2YjAnZtWqVXTq1Al3d3eqV6+ukRNz7do1/Pz82Lt373/Slt6Tu9H9k44sHLic6AexDJzVh3kHpzG46njycvK0fiY+IoEfp27m0b0okMloH9CKwD1TGFlnEmE3C36w+9YeZcP0rer1nMwc9f+V6nqRHJfKggHfEfswnqpNfBi3ejhKhZJfVxzUibaWvZow/OsAvh25hltng3l/XGfmHfyCj33HkhyXWsjezNKMqAex/L3jNCOWDCyx9ikbxmBlb8X0bgtIiU+ldb9mTNs6gdH1pxByJVQn2p7w55/GrFppzthx2VSpomDnTlM+m2LF+g3pODgUvnJk54C7u5KWLfNY+b15kfV6eipYuDhTvW5UxMt8d+4wRYZ+r1DH/zRmzSpzPhmXja+vgt27TPliihU/BqVjr0VjTrZKY4sWeaxeWbRGD08F8xe9WOPunabIZPrTmHgmloc/h+AxsBJW3jbEHHrEvUXXqbawHia2poXslblKzJzNcWzgxMPN94us17yMJT5TahQUGGk+DVt52lCqsQumpczJz8gjcncY9xZeo/qSBsjkun1ybu1Sk9GVuvD17Z3cTA2nZ7nmLK41hP6nF5KcV9hxNJebEJmVwJ+xV/mkUtci672fHs2Ey2vU6wpJobH9TmoER6IvEZOdjK2JJYMqtOPr2kPpfXIeSh2ft21ca/Cpz7ssvLmbGykP6e3RlKV1B9Pn5GKScrVoNDIlMiuBP2L+ZazPu0XWG5IezacXflCvKyRN5/126iMORV8hOisZWxMLhni3ZVndwfT4Z4HONQpeLww29KdcuXJcvXqV3377jS5dulC+fHnKly9Ply5d+P3337l8+TLlypX7T9ry3tjObJ6zk9O/XeDBtXAWBCynVGkHmnavX+Rnzuy9yLkDl3kUHM2je1Gsn7aFrPRsqjSqrGGXk5lDUkyyeslMy1JvO7T+T74ft55//75J9INYjm3+h8NBf9L0vYY609Zj/Lsc+OEYh4KOE34rgm9GrCEnMxf/j1trtb97IYS1kzdxfOupIh244mj3a+LDr8sPcOd8MNEPYvl5zi4ykjOoXNdLZ9qesHO7GZ065dGhYx4enkrGjc/GzEzi4AHtw/R9fZUMH5HDO63zed5IfiMjcHSU1IudXeGLYXCwnB3bTZk4OVtXcrSya4cZHTrl4d9BpfHTcSqNhw5qF+Djq2To8Bxa6UBjSLCcndtNmTBJfxpjDj7CqZU7Ti3csChjhcfASsjN5MT/pT0aauVlQ7m+Xjg2ckFmUrSzITOSYWJvWrDYaB4M53fcsfG1x8zZHCtPG8r08CQ3MYecON1r7VW+BXsfneVA1AXCMmL5+vYushV5dC7dQKv97bQIVgbv44+Yq+Qqi458KSQliblp6iUlL1Nj+++RZ7ma/IDo7CTupj1i7f1DuJo74GbhqFN9AH09m/FbxDn2RV4kNCOWhTf3kKPI5d3S9bTa30qNYPndAxyN/pc8pUKrDYBCqSQxN129PKvx10fnuJL0RGMkq4MP42Zhj7uFg071vQpKZDpZBJoYdJ4YuVxOx44d6dixo8Ha4FbBhVLuDlw+ek1dlpmaye2zwfg19uH41lMvrEMul9OiZyPMrcy4efquxrbW/ZrTpn9zEqOTObP3Iptn7yAnK7eImsDS1pK0xPSSC3oKYxNjKtf14pf5u9VlkiRx6ei/+D3jbJWUorTfPHWHlr2acHbfJdKTM2jZqzEm5iZcPX5TJ/t9Ql4e3L0rp2+/ggiXXA516uZz82YRYYVi8uiRnN49rTExBT8/BYOHZOPqWnCTz86GuXMs+GRsNo6O+nvay8uDe3fl9OmrqbF2Hd1o7NvLGlNTqOKn4OPB2bg8o3H+HAtGf6o/jcp8JRmhabh1KXhokcll2PrZkxGc9kp150RncfXTM8hM5FhXtKFMzwqYOWmPTClyFMT/E4Opszmmpcy02pQUY5kRlW3K8FPoH+oyCYmLSfeoaufxSnWXtXRiV7Np5CrzuZESxurgA8TmJGu1NZeb0Mm9HpFZCcRma7cpKcYyI3xsyrDx/nF1mYTE+cRgqtm/msZyVk781uJzcpV5XE8JZ+W9g8Rkp2i1NTcy4d0y9XiUmVCkjSEQo5P0g8Enuzt37hynT5/WmOyuSZMm1K9fdBTkaXJycsjJydEoU0oK5LLiXdwd3ewBSIpJ1ihPiknGwdX+uZ/1rFaeb0/NwdTchKz0bALfX0T4rYKupD+2nCA2LI74yCS8apRnyPwPKVe5NIEfLNZan1/jyrTq3YRp784rVttfhJ2TDUbGRiTFaP6Qk2JTKOdb5pXqfpH22b2XMO2X8exKWE9+Xj45mbkEvr+IyJCi84xKQkqKDKVSVqjbyMFB4mF4yW/wVaoomDQ5i3LllCQkyti0wYzxY634YV06lo/TJVZ+b07VqgqaNtVPDswTUh9rfLbbyMFB4uHDkmv09VUwcXIWZcsqSUyU8dNGM/43zorVPxZoXP29OX5VFTTRo8b8tDxQUqjbyNjOlOyokt+ErL1tsRjmg7mbBXnJuUTuCefOnKtUnVsXI4uCS1/s0Ugitt5HmaPE3N2CypOrIzfWbZDazsQKY7kRSbmaDyiJuemUt3Qpcb03U8OZd3Mr4ZlxlDK1YVCFdiyvO4qAs1+TpSi4LnYv05gRFTtjaWxGWEYsEy6vJV8qOvJREuxNLTGWG5H4rMacdDysnEtc742UcL66vp2wjDiczGwY7N2WlfVH8OGppWQqCh4I3y/XiNGVOqo1jr34o841Cl4/DObExMbG0qNHD06ePEn58uU1cmLGjx9P06ZN2blzJy4uz/+Bz5s3j8DAQI2yClTBm6pa7Vv3a8a4VcPV66/iMETciWRE7UlY2VnS/INGTAoaw/9azVDfzPevPaq2Db0eTmJUMouOzcDdy5Wo+zEadXlWLUfgnilsmrWdi0f+LXGb/itepH3g7D5Y2VsxuW0gKfFpNOlen2lbJzC+xXRCr4e/oHbD06BhwU3byxuqVMmkX18b/jpuQsdOeZw6acyVy0asWvPmjqCr/4xG3yqZDOhnw9/HTejQKY/Tp4y5csWI71e/mRrtaj7VXVIerLxtuTbhLInn4nBu6a7e5NjEBdtqDuQl5xB9IIL7K27hO60WctPXf6LNswl31P/fJ4pbqeFsa/o5rV1qsC/qvHrbkejLXEi8RykzG/qUb0lgtQ8ZfXHFc7upXhfOxBdEeEPSo7mR8pDdzT+jjVsNfn90Qb3tUNRlziXcw8nMln4ezfmqZj+Gn1v12mgUo5P0g8GcmFGjRqFQKLh16xY+Pj4a2+7cucPHH3/M6NGj2b59+3PrmTp1KhMmTNAoe89uYJH2p3+7wO2zBSNzTMxUh8DB1Z7E6GR1uYOrPSFXQ5+77/y8fHVk4d6l+/jU8+a9sZ34ZsQarfa3z94DoExFNw0npnyVsiw8Op39a4/y85xdz93ny5ASn4YiX4GDq51GuYOLHUlPaS0Jz9Pu7uVK9zEdGVJtvDrR9/6/YVRvVoVuo/3Vo7N0gZ2dhFwukZSkeYFISpLh4Kh95E5JsLaGsmWVPHqkurFduWxEZKScbl1sNOwCZ1pQrbqCJUsztVVTImwfa0z+jzRGRhZojIqU835XTY2zA1UaFy3RjUZjGxOQQ16qZjdrfkouJnaFk3pLvB8rY8zcLMiJ0cx3MbY0xtjSGHM3C6wq2nJlxCmSLsZTqnHJIyTPkpKXQb5SgYOptUa5o6k1ibmv1mX2NOn52TzMjKeMpeaIzwxFNhlZ2URkxXMjJZx9LWfR3Lkax2Ku6GzfybmZ5CsVOD6r0cyahBzddJGDSmN4ZhxlLUpplGfk55CRn0NEZgLXk8M53HoGLV2qciT6qs72/SqI0Un6wWCPGocOHWLFihWFHBgAHx8fvv32Ww4efPEIHTMzM2xtbTWW53UlZaVnExkSrV7CbkaQEJVE7TbV1DaWNhb4NqzIzdN3iqxHGzK5HFPTorMovWt5ApAQlaQu8/Ary+I/ZnB441+sn7blpfb3IvLz8rl78T6121QvaKNMRu021bl55u5zPvnyPK3dzFKVTyApNX+1SoUSmY5fI2FiApUrK7l0qcAfVyrh8iVj/Px0F0rOyoKoSDmlSqk09emXy5ofMli9tmABGDkqh0mTs55X1UtjYgKVKiu5fFlT45XLutcYGSlX57707pvLqrUZrFxTsAAMH5nD/ybpTqPcWI6Vpw1pN5LVZZJSIvVmMlYVbYr+4EuiyFaQE5uNif1zHKPHp6yUrzvnECBfUnA37RF1HSuqy2TIqONQkRspYTrbj4WRKWUsSpGQU3jkYcF+VYuJXLfPsPmSgjtpj6hXSlNjPceKXE/WrcaylqWIf47zpy+NgtcPg33DZmZmpKYW/UNLS0vDzEy3yXVFsfubffT7ogeP7kUT9SCWgbN6kxCZxMk9BeHYhUemc3LPOfXQ54/n9uP8gcvEhsdjYWNB637NqNnKj6kd5gDg7uVK637NOLf/MqkJaXjV8GDEkgD+/esmD66pulM8q5Zj4bEZXDx0lZ1L9qpzcJQKJSnxRR+bl2Hn0r1MDhrN3Qsh3DkXzHvjOmNuZcah9X8CMDloDPGRiaz7/GdAlQzs4aeab8PE1BinMqXwrumpdv6Ko/3h7Uc8uhfF2FXDWDNpE6kJaTTtXp867WrwZZf5OtH1ND165rBwvgU+Pgp8fBXs2mlKdraMDh1Uo6vmzzPHyUliyFBVjkBeHoSFqZyp/HyIj5cRHCzHwkKiTBnVXWz1SjMaNcnH1VVJQrycDRvMkMsl3mmtqvPJaJ5ncXFR4u6u+0eu9z/IYfECCypXVmnc/Vhje39VexbOV2n8eEiBxvDHGvPyISFeRkiwHPOnNK5ZZUajxvm4uCpJSJCzKcgMI7lEq2JodNOxRtcOZXiw9g6WFayx8rIl5nAEyhwlTi3cAHiw+jYmDmaU7VUBUCUDZz9SRYKkfIncpFwyw9KRmxth7moBwMMt97Gv7YhpKXPyknN4tCsMmVyGYyNVfkZObBaJZ+OwreaAsY0JeUk5RO19iMxErtkVpSO2hf/NVL/e3EmN4FbqQ3qWb46FkSn7H3f7fO7Xh/icFNaEHABUibKeVqpudhO5EU5mdlS0Lk2WIodHWQkAjKr4LifjbxKTnYSTmS2DKrRHKSk5+jjC4m7uSGvXmpxPvEtybgYu5nb093iHHGUeZ+Jv6VzjltATfFmtJ7dTI7iR8pA+5ZthbmTK3siLAEyv1ou47BRWBh9Sa6xg7aL+39nclko27mTl5xLxWOMnlTtxIu4WUVnJOJvZMKRiOxSSkiNRqghLaQtH2rrV4Gz8PZLz0nExs2NAhVbkKPI4HX9b5xpLikjs1Q8Gc2J69+5NQEAAS5cupU2bNtjaqia1Sk1N5dixY0yYMIG+ffv+J23ZuvBXzK3MGbd6ONb2llw/cZupHedoDDF293bF1qngqdDexY7JG8bg6O5ARkomD/4NY2qHOVw6qspnyc/Np06bGrw/VuU0xD1M4J9dZ/n5q53qOpp/0AgHFzvaDmhB2wEt1OXRobEM8BqtE21/bTuFvbMtAYG9cXCzJ+RKKJ93nENyrCph0qW8k0bEpFRpB1ZdLpgoq9fErvSa2JWrx28wsfXMYmlX5Cv4ovNcBs/rz+zfpmBubU5kcDSLBq7g3IHLOtH1NO+8k09KcjZB681ISlJNdjdvQSYOj2/AsbFy5PKCJ+uEBBkjhhWEvLdvM2P7NjNq1MxXdwPFxcuZ+5UFqaky7OwkqlVX8N3yDOztDRMTbvVOPikp2WwMUmn08lYyZ36BxrhYOXKZpsZRwws07thmxo7HGp90A8XHyZk3x4K0xxqrVlOwzEAaHRu5kJ+WR+SuMNVkd+WtqTSpmro7KSchB2QFN4G8pFxufnlJvR5zIIKYAxFY+9rh+3lNAHITc7j//W3y0/MwtjHBurIdvtNrqROIZSZy0u6kEHPoEYqMfIztTLDxsaPKUza65I/Yq9ibWvGxlz+OZjYEp0Uy8coP6mRfV3N7pKf6HJzMbFnXcLx6va9HK/p6tOJyUghjL60CwNncjhnV+mFrYkVybjrXUkIZcWE5KY/nnclV5lPTvgI9yzfHxtiCpNx0ribfZ9SFFVrnpnlVjsX8i4OpFUO821HKzIZ7aZGMv7ROQ6PyGY0bG49Vr/f3bEl/z5ZcSrzP6AuqbnlnMzsCq/fFztSS5NwMriaFMvTs9+r25yrzqGnvSe/yTbExsSAxN50rSQ8Ydm6l1rlpDIVwYvSDTJIM01OXk5PDuHHjWLduHfn5+ZiamqrLTUxMGDx4MEuXLi1RNKadvKeumyswAOuemZ30bUPx/6CP/ItHRU9g9rbwMN3e0E3QK3mKVxvG/yZwur3uI8TPUvXXmTqp50a3l69nxYoVLFq0iOjoaGrWrMl3331Hgwba5ye6ceMG06dP5+LFi4SFhbF06VLGjRunYTNz5sxCA2p8fHy4fVsV+UpMTGTGjBkcPnyY8PBwnJ2d6d69O7Nnz8bOriBHUyYr7Nht2bKFPn36FFubQbuTVq5cyYIFC7hw4QIxMapEV1dXV+rVq6eOzAgEAoFAICgZW7duZcKECaxatYqGDRuybNky/P39uXPnjtbRv5mZmXh5edGzZ0/Gjx+vpUYVVatW5ejRghG4xsYF7kRkZCSRkZEsXrwYPz8/wsLCGDFiBJGRkezYsUOjnvXr19OhQwf1ur29/UvpM3jWk62tLa1bF8wea2pqytWrV4UTIxAIBIK3BkONTlqyZAlDhw5l0KBBgOqVP/v27WPdunV89tlnhezr16+vnqdN2/YnGBsb4+bmpnVbtWrV2LmzIHXC29ubOXPm8OGHH5Kfn6/h8Njb2xdZT3EwmBPz7LDoJygUCubPn0+pUqrhc0uWLNFqJxAIBALBm4IhcmJyc3O5ePEiU6dOVZfJ5XLatm3L6dOnX6nue/fuUbp0aczNzWncuDHz5s2jfPnyRdqnpKRga2ur4cAAjB49miFDhuDl5cWIESMYNGiQ1m6mojCYE7Ns2TJq1qxZKHQkSRK3bt3CysrqpYQIBAKBQPC2o22WejMzM635o/Hx8SgUCvVksk9wdXVV56+UhIYNGxIUFISPjw9RUVEEBgbSvHlzrl+/jo1N4WkR4uPjmT17NsOGDdMonzVrFq1bt8bS0pLDhw8zatQo0tPT+fTTT4vdFoM5MXPnzmXNmjV8/fXXGt1JJiYmBAUF4efnZ6imCQQCgUCgU3QVidE2S/2MGTOYOXOmTuovDk+/77BGjRo0bNgQDw8Ptm3bxuDBgzVsU1NT6dy5M35+foXa+OWXX6r/r127NhkZGSxatOilnBiDTXb32WefsXXrVkaOHMnEiRPJy9P+xmSBQCAQCN50JB0tU6dOJSUlRWN5urvoaZycnDAyMlIPnHlCTEzMK+WhPIu9vT2VK1cmODhYozwtLY0OHTpgY2PD7t27MTEpejJYUEV4IiIiCkWanodBXw5Sv359Ll68SFxcHPXq1eP69euiC0kgEAgEgiLQNkt9UVORmJqaUrduXY4dO6YuUyqVHDt2jMaNG+usTenp6YSEhODuXvBOstTUVNq3b4+pqSm//fYb5uba3x7/NFeuXMHBweGlplYx+Ogka2trNmzYwC+//ELbtm1RKMRbRwUCgUDwdmGoye4mTJhAQEAA9erVo0GDBixbtoyMjAz1aKWPPvqIMmXKMG+e6mXIubm53Lx5U/3/o0ePuHLlCtbW1lSsqHqlxMSJE+nSpQseHh5ERkYyY8YMjIyM1BPUPnFgMjMz+emnn0hNTVXP0O/s7IyRkRG///47MTExNGrUCHNzc44cOcLcuXOZOHHiS+kzuBPzhD59+tCsWTMuXryIh4eHoZsjEAgEAoHuMNAQ6969exMXF8f06dOJjo6mVq1aHDx4UJ3sGx4ejvypd9pFRkZSu3Zt9frixYtZvHgxLVu25Pjx4wBERETQt29fEhIScHZ2plmzZpw5cwZnZ9UrPS5dusTZs2cB1I7PEx48eICnpycmJiasWLGC8ePHI0kSFStWVA8HfxkMNmOvPhEz9r4diBl733zEjL1vPmLGXt1QaftXOqnnXs9pOqnnbcGgOTECgUAgEAgEJeW16U4SCAQCgeBt5e3r83g9EE6MQCAQCAR6RrzFWj8IJ0bw2nItt5Shm6BXjqRUM3QT9M6ZE1UM3QS9Yx7/dt+cZPmGbsF/QHtDN0BQUoQTIxAIBAKBvhGRGL0gnBiBQCAQCPSMyInRD2J0kkAgEAgEgjcSEYkRCAQCgUDfiEiMXhBOjEAgEAgEekaMTtIPojtJIBAIBALBG4mIxAgEAoFAoG9Ed5JeEE6MQCAQCAR6RnQn6YfXwonJz8/nxo0bREdHA+Dm5oafnx8mJiYGbplAIBAIBDpARGL0gkGdGKVSyfTp01mxYgUpKSka2+zs7BgzZgyBgYEarwkXCAQCgUAgAAM7MZ999hlBQUHMnz8ff39/XF1dAYiJieHw4cN8+eWX5ObmsmDBAkM2UyAQCASCV0R0J+kDgzoxGzduZNOmTfj7+2uUe3p6MmzYMDw8PPjoo4+EEyMQCASCNxvRnaQXDOrEpKWlUbp06SK3u7u7k5GR8Z+0JSCwNx2HtMHa3oobJ2/z7ai1PAqOLtL+3RHt6TKiPa6ezgCE3Yjgp9nbOX/witpm8R8zqdmqqsbn9q4+zDcj1wLgVcODPlO6U7WZL3ZOtsSExrJ39RF2f7tfp9q6jvKn58SuOLrZE3I1jBWfruPO+WCtth5+ZQkI7E2lul64ebrw/fj17P5Gsz3F0e7u5cqwRR9RrZkvJmbGXDh4heWfriM5VrPbUFec+E3BHzuUpCVBaS8Z74+S4+GjvRsyKlTi4CYFD+9JJMVC9+FyWr5npGFzcJOCQ5uVGmUuZWHqD4XztCRJYs2XCm5fkPh4uhHVm+in+zP0UBwPfo8lJzkPGw8Lqg4qi31FK622aQ+zuLstitQHWWTF5VLlozJU6OyiYXN3exTBOzTPcavSZrRc6qdev7YmnITraWQn5mFsboS9jxW+/UpjXcZc5/o+rFWTofXq4Wxlxa24OAL/+JN/o7X/BiuVKsW4Jk2o5upCWTs7Zv/5J0GXLmvYfNq4MWObNNYoC0lMpP36IADszM0Z16QxzTw8KG1jS2JWJkeCQ1hy8iTpubk61wfQt1FNBrWoi5O1FXei45j7259ci4jRauvtUopP2jXGr4wLZRzsmL/3OJtOamoc1aYRo9tqarwfm0iXpRtUGi3MGN22MU0qeeBub0tSRibHbobw3eFTpOfoR2OfJjUZ1LIuTjZW3ImKY+6eP7n+sAiNrqUY4/9Yo6Md8389zk8nntHYrhGj2hfW2HWRSqOthRmj2zemSWUP3B1sSUrP5I8bIXx36BTp2frRKHh9MKgT06pVKyZOnMjmzZtxcnLS2BYfH8+UKVNo1aqV3tvRe3I3un/SkYUDlxP9IJaBs/ow7+A0BlcdT15OntbPxEck8OPUzTy6FwUyGe0DWhG4Zwoj60wi7GaE2m7f2qNsmL5VvZ6TmaP+v1JdL5LjUlkw4DtiH8ZTtYkP41YPR6lQ8uuKgzrR1rJXE4Z/HcC3I9dw62ww74/rzLyDX/Cx71iS41IL2ZtZmhH1IJa/d5xmxJKBJdJubmnG/EPTuH81jEltAgEYOKs3s3/7jE8bf46k45eIXP5LyZ61Snp+YoSHj4y/9ihY/YWCqT/IsLEvHMLNy5Eo5SajZnM5e1YriqzXzQNGziv4iciNtNv9tVuJTM+R4shTSdze+IiqQ8phX8mS0P1xnJsbQsulVTCzK+xYKXKUWLqa4d7IgVsbI7TUqMK6rDkNv6yoXpfJNYXYeVlSppkj5k4m5KUruLcjinNzgnlnedVCtq9CZ5/KfN6yJV8ePcbVqCgG1a1DUI/3abduPQlZWYXszY2NeZiSwoG7d/miVcsi670bH8+A7TvU6wqpwDF1tbLCxcqaeX/9TXBCAmVsbZndti0u1laM+X2vzrQ9oUP1ykzu3ILAPce49jCaAU3rsPrj93n36yASMwprtDA15mFiCoeu3WVK51ZF1nsvOp4hP+5Ur+crCzQ621rjYmvN4v3/EBKbQGl7W6a/1wYXG2vG/6wHjTUrM7lLC2btPMa/4dEMaF6H1UPep8vCIjSaGBORkMLhq3eZ3LVVkfXei45nyJoCjQpFgUYXW2tc7KxZvPcf7scm4G5vy/QebXC2tWbCJt1rLDEiEqMXDOrErFq1ik6dOuHu7k716tU1cmKuXbuGn58fe/fq/yR8b2xnNs/ZyenfLgCwIGA526PX0rR7fY5vPaX1M2f2XtRYXz9tC++OaE+VRpU1nJiczBySYpK11nFo/Z8a69EPYvFrXJmm7zXUmRPTY/y7HPjhGIeCjgPwzYg1NOxUB/+PW7N1wZ5C9ncvhHD3QggAg+f111rni7RXbeqDq6cLI+tMJjNNdeFaOHAFuxPXU6t1NS4fu6YTbU84vktJ4w5yGrZXRUB6fmLErXP5nD2kpG3vwp5HeR855X1U/+9dV7QTIzcCW8fn36gfhUgc36VkwrfGzOiXX3IRL+DBvljKtSlFuXdKAVBtSDliL6US8WcC3t3dCtnbV7RSR2nubIkssl6ZkQwz+6JHAZZv+9TDhQtU7l2aE5Nvkxmbi5WbWQnVFObjunXZeu06O2/cAGDakaO0quDFB9Wrsfrc+UL212JiuBajerqf1LxZkfXmK5X8H3vnHR5V8f3hdzebbHo2PaEkIdTQq6HDD5QmCAhSpfdeRBBEegcRFAREARuCCiK9CioIhBJ6CQkpkN572/L7Y2HDmoSS7LLgd97nuc+zd+7cmfkkd++ee+bMuQlZWUUeC0pMZNy+fbr9iNRUPj1zmk87dsRMIkFlYGN7UIv6/HrhBnsu3QJg/p7jtKxagXcb1uTrPwtrvPEwlhuPvDRTOhSvUaVWk5BRtMbg2EQm/1hwD32QlMraI2dY3rsDZlIJKrVhNQ5sWZ9fz99gz0WtxgW7j9PSrwLd36jJNyefrnFyp6drTEwvXuOU757QmJjK54fPsKyvcTSWGLHE2iiY1IgpX748V69e5ciRI5w7d063xPqNN95gyZIltGvXzugrkzwquOHs6Ujg8YIf1qy0LO6cD6Z6k6rFGjFPIpVKafleYyxt5Nw6G6R3rE2/FrTt34KkmBTO7b/Ejwt/JTe7eBentb016UkZJRf0BDJzGVUa+LJj2W+6Mo1Gw+Xj16jeuIpB+ihKu7ncHDQaPS9Wfk4eGrWGms2rGdSIUeZreHhPw5u9C64TqVRC5XoSwm+X7uaVEAlz++UjswAfPwmdh5jh6FZwI8rL0fD9ciU9xpk909gpDWqlmrT7WVTs5q4rk0gluNSyI/le0Tf25yUrJpcTo68jNZfiWNmGqv3KYOViUWRdZY6Kh6cSsXKzwMrFcOkPzKVSarq7szEgQFemAf6JCKeep2ep2vZxdOSfUSPJVSoJjI5m5d+niU5PL7a+nVxORl6ewQ0YczMp1cu4s/lUwQ+5RgPnQiKo41U6jV4ujpycOYJcpYqrEVGsOXyG6NSnaLSUk5GTZ/Afd5mZlOpl3fn6j39pvBdBHe/Sa/xj9iON4VGsOXSGmJSXr1Hw6mHyPDFSqZSOHTvSsWPHEp2fm5tLbm6uXplao0IqKcb3/y+cPBQAhbwlybEpOLornnquT00vPv9nMRaW5mRn5DD/3ZVE3C7wwvzx02niwuNJiErGt7YXw5e9T/kqZZjfc1WR7VVvUoXWvZsyu/PS5xr7s3BwscNMZkZyrH4cSnJcKuWrlS1V20/TfvvcPXIycxm+/H22zNqORCJh2LL+mMnMcPJ0LFW//yYzDdRqsFPol9spJMQ9KPkNzLuahL4fmOFWTkJakoYjP6r5YpqS6RtlWFprDZY9m9T4+Emo1cS4hnZemgqNmkLTRnIHGRlROSVuV1HJmtpjvLApY0lucj73dsVwdm4QLVf5IbMq+P6EH4nnzo9RqHLV2JSR88bHlZDKDKfZ0coKmVRKQqa+QZaQlYWvk1OJ270aHc30w4e5n5SMm40NE5s2YWef3nTc9i2Z+YWniR2tLBnfuDE7rxnWUwigsLZCZiYl8V8ek8T0LCq4lvw7ce1BDB//coSwhGRc7WwY07Yx343qRdc135GVV1ijwtqS0W38+eWC4TU62hSjMSOLCm6l0BgRw+ydRwiLT8bFzoaxbzXmu7G96Pbpd2QVMd2vsLZk1Jv+/Hre8BpLg4HtYsEjTG7EAAQEBHD27Fm9ZHdNmzalUaNGzzx36dKlzJ8/X6+sAn5UpEaR9dv0a87kjaN0+6UxGB7ejWJ0vQ+xcbCmRc/GfLhtPB+0nqv7MT+4+biubtiNCJKiU1h5Yi6evu5E39cPdPOpUZ75e2bw/YJfuHTsWonH9LJ4mvbUhDQW9vqUiV+OoNuEjmjUGk7+dIagS/fRvCZPRn6NCn6ky/hK8K4mYcFAJVf+0tC4g4QbZ9Xcu6pm2vpX4itUItzqORTseFuhqGzNyXE3iT6bQvk2zrpDZVo44VLbjtxkJff3xxK4JpQmC6pgZvFq52/6MyxM9/luQgJXYmL4e8RwOlWtyi83bujVtbWw4Ovu3QlOTGTt2bMveaQl53RQmO5zUEwC1x7EcGzGMDrUrsLuizf16trILdgwuBshcYl8efzcSx5pyTl9N0z3OSg6gesRMRyd9UjjhcIavxzWjZDYRL48+oppfD1ufa8dJr0Dx8XF0aNHD86cOYOXl5deTMyUKVNo1qwZu3btws3Nrdg2Zs6cydSpU/XKujsMLrb+2b0XuXO+YGWOuVz7J3B0V5AUk6Ird3RXEHI17KnjV+YriQrRGl73Lt+nasOKdJ/UibWjvyqy/p3z9wAoW8lDz4jx8ivHiuNzOLj5ONsX735qny9CakI6KqUKR3cHvXJHNweSn9BaEp6l/dKxawyqPAF7ZztUShWZqVnsjNrMqZ1Fr1IoKTb2IJVCeop+eXqKBnsDOn2sbCW4lpWQEKW9E927qiExGmb10I+D2bpIhW8NNeNXGu6rZWFvhkQKuan6T525qcqnxrO8KOY2Mmw8LcmM0fdsmlubYW5tho0nKKpYc2zodWIvpFCmWcm9JE+SnJ2NUq3GxcZar9zF2pp4A65OTM/NJTQ5GW+FQq/cxtycrT3eJTMvj9G/79ULjDUUKVnZKFVqnG31NTrbWZNQTKxHSUjPySU8IRkvZ4VeubWFOZuGdCczN5+JP+wzisbkzGI02hpJo4tCr9xabs6m4VqNk741jkbBq4dJH6XGjh2LSqXi9u3bhIWFcf78ec6fP09YWBi3b99GrVYzbty4p7Yhl8uxt7fX2542lZSdkUNUSIxuC7/1kMToZOq1ramrY21nRTX/Stw6e/eF9EikUiwsiv9RqVjXB4DE6GRdmXf1cqz6Yy5Hv/uTrbN/eqH+noUyX0nQpfvUa1urYIwSCfXa1uLWuaCnnPniFKc9LTGdzNQs6v5fTRRu9rrgaUMhM5dQrrKEoCsFjzlqtYZ7VzR4+xkuTiU3W0NitAb7R7/bbXtJ+XCDjGlfFmwA3UZK6fvB801lPi9SmRR7X2sSrxfEAGjUGhJvpONY2fopZ74YyhwVWbG5WDoWb4BpNNq4KnW+4R4r89VqbsTG0tTLS1cmAZp4eREYHW2wfqzNzfFyUOgZRrYWFmzr2YM8lYqRe34nT1V8oHdpyFepuRUVS+OK5XVlEgn4VyzP1QgDarQwp7yTgvj0Ao02cgs2D3uXfJWK8d/9Tp7SOBqVKjW3ImPxr/QvjZXKczXccBqtLMwp76wgPk1f41cjtBonbDWexlKhkRhmE+hhUk/MkSNH+Ouvv6hatWqhY1WrVuXzzz9/KUusf1t7gH4f9yDyXgzRoXEMXtCbxKhkzuwpCFBbcWwOZ/YE6FYNDV3SjwuHAomLSMDKzoo2/ZpTp3V1ZnZYDGjzpLTp15yAg4GkJabjW9ub0asHce3PW4RejwC0U0grTszl0pGr7Fq9XxeDo1apSU0ovPy5JOz6bD/Tt40j6GIIdwOC6T75bSxt5LqVUdO3jSchKokts7YD2mBg7+rlADC3kOFS1pmKdXx0xt/zaAdoP7g1EbcjSYlPo3qTKoxdM4Tdaw7wMKj4lTIlpfW7UravUlG+skS7xPo3NXk56FYr/bhSiYOzhM5DtcaFMl9DrPZfgEoJqQnaVUYWVuBaRnuT+H2zihr+EpzcJKQmaTj8vRqJGdRvrW3T3kmiM2iexNFNgrOH4W80Fd5249qX4ThUtEZR0YbQg3Eoc9WUa62d9rm6Lgy5kwXV+mnzLqmVajIe5ug+5yTnkxaWhZmlmW5V0e3vI3FrYI+ViwW5yfkE/RKDRCrBs5nWhZUVm0vUP8m41rHHwl5GTmIeIb/HYmYhxbWevUH1bbl0iZUdOnA9JparMTEMqV8fa3Nzfr2hnS5Y1aEDMRkZrDp9GtAGA1dy1mo3NzPDw9YOP1dXsvLzCU9JAWBmq5acCLlPZFoa7rY2TGraFJVGzb47d4BHBkyPHliZy/jg4CFsLSywtdAGNSdlZ6M2cBDDt39fZsl77bkZGfdoiXU9rCzM+e2SVuOS99oTl5bBmiNnHumSUtGtQKObvS3VPF3JyssjIlEb5zatYwtO3blPVHI6bvY2jHuzCSq1moNXtQ9gNnILNg99F0tzGR/tPIyt3AJb+SONmYbX+N1fl1ncuz03H8Zx40EM77fQatzzaNpnSZ/2xKVmsOaQVqPMTEpF9wKN7g62VC3jSlZuHg8ea+zcglO3ntDY7pHGKwUavxrxLlYWMib9dBgbSwtsLLUakzMMr7GkSF6NYfznMKkRI5fLSUsr/sc6PT0dudxwyziLY+eK37G0sWTyplHYKqy5cfoOMzsu1ltd41nRHXsXO92+ws2B6d+Ox8nTkczULEKvhTOzw2IuH9fGsyjzlNRvW5t3J2mNhvgHify9+zzbFxXkOmjRszGObg68OaAlbw5oqSuPCYtjgO/TPVDPy58//4PC1Z5B83vj6KEg5EoYszou1iWdc/Ny0YtTcS7jyMbAlbr9XtPeode0d7h66ibT2sx7Lu0A5aqWZeiS/tg52RIbFsf2JbvZ9ZlxlsvXayUlI1WbwC4tGcr6Shi1yAw7R60xkRwHkifuIGmJsGpcwTTQyV1qTu5SU7GWRDcNlJqg4ftlajLTwdYBfGtImPyZDNsi8s68DMo0dSQvTUnQz9HkpSix87HijZkVddNJ2Yn58ETelpykfE7PKPAkhu6LI3RfHE7VbWk8t7K2TmIeVz4PIz9dhYW9DMeqNjRZVAW5vbZNqbmU5DuZhB2KJz9DhVwhw6maLU0WVikyN01pOHA3CCcrayY3a4qLtTW34+MZsms3iY+WR3va2+n9GLnZ2rJ/4ADd/ohGDRnRqCHnHjyg/8+/AOBha8uatzuhsLQkKTubS5GR9Nz+E0mP8s7UcHOjXhntqpmTw4fpjafl5q+JfMq9qSQcvh6Ek60V499sgoudNXei4xm19TddIKynwk4vh5KrnS27Jr6v2x/asiFDWzYk4P4DhmzW5r5xd7BjZZ9OKKwtScrM5nJYFP027CD5UU6W6mXcdKufDn84VG88by3/hqgUA2u8GoSjjRXj2z/SGBXP6K/1Ner9H+1t2TWlQOOQ1g0Z0rohF0IeMGRjgcYV/TqhsLEkKSObwLAo+q97QmNZN93qp0Mf6Wtst+QbopINq7HECCPGKEg0hs489gKMGzeOAwcO8Nlnn9G2bVvs7bVPd2lpaZw4cYKpU6fSuXNnvvjiixdq9y3pe8YYruAlMyXktqmHYFSOpdZ8dqXXnL0n3jD1EIyOZcJ/28UvMV76o1eGGyunGL0Pn69WPrvScxA28kODtPNfwaSemNWrV6NWq+nTpw9KpRKLR67cvLw8ZDIZw4YNY9WqopcjCwQCgUDw2iDiWYyCyaeTNmzYwPLly7l06ZLeEusGDRroPDMCgUAgELzWiOkko/BKJHqwt7fn//7v/3jnnXfIycnh+PHjfP/99yQmJpp6aAKBQCAQCF5RTOqJqV69OqdPn8bJyYkHDx7QsmVLkpOTqVKlCiEhISxYsIBz585RoUIFUw5TIBAIBILSITwxRsGknpg7d+6gVGqjxmbOnEmZMmUIDw8nICCA8PBwateuzccff2zKIQoEAoFAUHo0BtoEerwS00kAZ8+eZd68eTg4aLPL2traMn/+fE4/ygshEAgEAoFA8CQmf/GLRKKN2M7JycHzX2+sLVu2LPHx8aYYlkAgEAgEhkOsTjIKJjdi2rZti0wmIy0tjbt371KzZkHujPDwcJydnZ9ytkAgEAgErz4iY69xMKkRM3fuXL19W1tbvf19+/bRokWLlzkkgUAgEAgErwkmjYmZO3eu3ta+fXu94ytXruSnnwz7UkSBQCAQCF46JgzsXb9+PT4+PlhaWuLv709AQECxdW/evEmPHj3w8fFBIpGwZs2aQnXmzZuHRCLR26pVq6Y7npSUxIQJE6hatSpWVlZ4eXkxceJEUlNT9dqJiIjg7bffxtraGjc3Nz788EPdYp/n5ZUJ7BUIBAKBQGBYdu7cydSpU5k7dy6XL1+mTp06tG/fnri4uCLrZ2Vl4evry7Jly/Dw8Ci23Ro1ahAdHa3bnlyEExUVRVRUFKtWreLGjRts27aNw4cPM2xYwTvKVCoVb7/9Nnl5efzzzz98++23bNu2jTlz5ryQvhIZMU/zjnz4oXivg0AgEAgETyLRGGZ7UVavXs2IESMYMmQI1atXZ+PGjVhbW7Nly5Yi6zdq1IiVK1fSp0+fp76AWSaT4eHhodtcXFx0x2rWrMmuXbvo0qULFStWpE2bNixevJh9+/bpPC1Hjx7l1q1b/PDDD9StW5eOHTuycOFC1q9fT15e3nPrK5ERM2bMGA4dOlSofMqUKfzwww8laVIgEAgEAsEzyM3NJS0tTW/Lzc0tsm5eXh6XLl3izTff1JVJpVLefPNNzp49W6px3Lt3jzJlyuDr60v//v2JiIh4av3U1FTs7e2RybShuGfPnqVWrVq4u7vr6rRv3560tDRu3rz53OMoUWDvjz/+SN++fdm/fz/NmzcHYMKECezevZuTJ0+WpEmBoBD5GpMvnjMqwemuph6C0bF5+N9fVmoTqzb1EIyKNE8sqzEIBlpivXTpUubPn69XNnfuXObNm1eobkJCAiqVSs9QAHB3d+fOnTslHoO/vz/btm2jatWqREdHM3/+fFq0aMGNGzews7MrchwLFy5k5MiRurKYmJgix/X42PNSol+Jt99+my+//JJ33nmHY8eO8c033/D7779z8uRJqlSpUpImBQKBQCD472IgW3DmzJlMnTpVr+xp0z7GoGPHjrrPtWvXxt/fH29vb37++We9uBeAtLQ03n77bapXr16koVVaSvyo269fP1JSUmjWrBmurq78+eefVKpUyZBjEwgEAoFA8ARyufy5jRYXFxfMzMyIjY3VK4+NjX1q0O6LolAoqFKlCsHBwXrl6enpdOjQATs7O3777TfMzc11xzw8PAqtkno8zhcZ23MbMf+2/B7j6upK/fr1+fLLL3Vlq1evfu4BCAQCgUDwn8cEs3IWFhY0aNCAEydO0K1bNwDUajUnTpxg/PjxBusnIyODkJAQBgwYoCtLS0ujffv2yOVy9u7di6Wlpd45TZo0YfHixcTFxeHm5gbAsWPHsLe3p3r16s/d93MbMYGBgUWWV6pUibS0NN3xx68REAgEAoFAoMVUGXunTp3KoEGDaNiwIW+88QZr1qwhMzOTIUOGADBw4EDKli3L0qVLAW0w8K1bt3SfIyMjuXLlCra2trrZlmnTptGlSxe8vb2Jiopi7ty5mJmZ0bdvX0BrwLRr146srCx++OEHXQAyaB0fZmZmtGvXjurVqzNgwABWrFhBTEwMs2fPZty4cS80PfbcRowI2BUIBAKB4PWid+/exMfHM2fOHGJiYqhbty6HDx/WBdFGREQglRYsVI6KiqJevXq6/VWrVrFq1SpatWrFqVOnAHj48CF9+/YlMTERV1dXmjdvzrlz53B11S5WuHz5MufPnwcoFGYSGhqKj48PZmZm7N+/nzFjxtCkSRNsbGwYNGgQCxYseCF9Eo1G858LPX9L+p6phyAwAOOD75l6CEbl68j//is1wnf7mnoIRkesTnr9OfPrNKP3UfFTw4RZhHxQdGjH/yr/7TWsAoFAIBC8Cvz3bUGT8EoYMTExMZw/f163NtzDwwN/f3+DRk8LBAKBQCD4b2FSIyYzM5NRo0axY8cOJBIJTk5OgPblURqNhr59+7Jp0yasra1NOUyBQCAQCEqFqQJ7/+uY9AWQkyZNIiAggAMHDpCTk0NsbCyxsbHk5ORw8OBBAgICmDRpkimHKBAIBAJB6dFIDLMJ9DCpEbNr1y62bdtG+/btMTMz05U/Xn61ZcsWfv31VxOOUCAQCAQCA6Ax0CbQw6RGjFqtxsLCotjjFhYWqNX/7ch/gUAgEAgEJcOkMTGdO3dm5MiRfPPNN3rr0kGbXG/MmDF06dLlpYxl0PzedBzeFluFDTfP3OHzsZuJDC7+JVSdR7ejy+h2uPto18WH33zIDwt/4cLhK7o6q/6YR53WNfTO27/pKGvHbAbAt7Y3fWZ0o0bzaji42BMbFsf+Tcf47fODBtX2ztj2vDftHZw8FIRcDWf9xC3cvRBcZF3v6uUYNL83lRv44uHjxpdTtvLbWv3xPI92T193Rq4cSM3m1TCXy7h4+ArrJm4hJS7VoNoe888+JX/+qiQ9WYOnr4SuYyzwqlq0jR4Trubo9/lE3tOQHKehy0hzWnTX/yoc/SGf4z8q9cpcy0n4cLN+1kkAjUbDljl53L2oZuAnFtRsalaojiFI+SOCpCNhqFLzkJe3xbWvH1a+DkXWzY3MIPH3YHLC01Am5uDauyqOb3nr1Un4PZikfff1ysw9rKmwqLluP/a7W2TdTkSZkotUboZlJQWuPapg4WljcH29m9VhcJsGuNjZEBQVz9LdJ7kREVtk3Yoezozr0AS/8m6UdXJgxW+n+OEv/YScY9o3ZkyHJnplobFJdF32rW6/R5NadKpfFb9ybthaymk280vSc4p+I7Ah6PFWXfp3boiTgw3BEfGs/vYPboUUfZ+pUNaZEe81pVoFdzxdHVjz3Ul2Hr6sV2dYjyYM79FUryw8Kok+07bq9ru2qUW7pn5U9XHDxlrOW8PXkZFlPI3vdqhLv3ca4aSwITg8ns++OcHtYu6lFco5M7xPM6r6uuPp5sDarX/w8wF9jUN7NWVYr39pjEyk36QCje+8WZu3WvhRtYJWY/uBXxhVY0kQMTHGwaRGzLp16+jXrx8NGjTA0dFRl3o4Li6OlJQU2rdvz7p164w+jt7Tu9JtQkdWDF5HTGgcgxf0Yenh2QyrMYX83Pwiz0l4mMg3M38k8l40SCS0G9Sa+XtmMKb+h4Tfeqird2Dzcb6ds1O3n/vEF6tyA19S4tNYPuAL4h4kUKNpVSZvGoVapeb39YcNoq1Vr6aM+nQQn4/5itvng3l38tssPfwxQ6tNIiU+rVB9ubWc6NA4/vr1LKNXDy6RdktrOcuOzOb+1XA+bKt92+rgBb1ZuPcjJjaZhaFTE135U8m+r/J5d4I5XlWl/L1HyTezc/lwsyW2isJzyPk54OQhpXZzCfu+Kvr/C+DuLWHkkoLMkdJibJO/96hKreFZpAfEEP/zXdzer46lrwMpx8OJXHMJn0XNkNkXzm6pyVNh7mqFbUN34nfeLbZdizI2lPugoW5fItX/e8m97bFr7IG5kxWqzHwS94bw8LNLVFjWolDd0tC+bhU+7NaShb+c4Hp4DO+3qs/GUe/yztJtJGVkF6pvaS7jYWIqR68G8WG31sW2GxydwIgNu3T7qn95dq3MZZy5E86ZO+FM7tz836cblLaNqzLx/Vas2HKcm8HR9O7YgM8+6kGfD7aQnFaERrmMqLhU/jgfxKT3WxfbbsiDBCYu+UW3r1Lrf78sLcw5dzWMc1fDGNvXuLmJ2jatyoRBrVn51XFu3Yum19v1WT27J30nbiElLatQfbncnKjYVP44e5eJg/+v2HbvRyQwacHPun2V6l8a5TLOB4ZyPjCUMe+3NJwgQyKMGKNgUiPG0dGRQ4cOcfv2bc6dO6e3xLpJkyZUq1btpYyj+6S3+XHxLs7uvQjA8kHr+CVmM826NeLUzn+KPOfc/kt6+1tn/0Tn0e3wa1xFz4jJzcolOTalyDaObNXPghwTGkf1JlVo1t3fYEZMjymdOfT1CY5sOwXA2tFf4d+pPu2HtmHn8j2F6gddDCHoYggAw5b2L7LNZ2mv0awq7j5ujKk/nax07c15xeD1/Ja0lbptahJ44rpBtD3m79+U+Hc0o1E77eX87gRz7lxQceGokv/rZV6ofvmqUso/8tIc2qosdPwxUjOwc3r6D3VUiJq/d+Uz8XNLFvbPKYWKp5N8LAz7FuVwaF4WALf3q5NxLYG001E4dapQqL5lBQcsK2i9NAm7ik8aKDGTInMoPsW3olU53WdzFytculUifP5Z8hOysXAz3KrBga3rs+vsDX4P0KY7X/jLcVr4VaCbf022nLhQqP7NB7HcfKD10kx6ivGhVKtJTC/84/mYx96bhhXLFVvHUPTt1IC9J69z4M+bAKz45hjN6lagc6tafL8voFD92/djuX1fq3Fsn+KND5VKTVJq8Rofe2/q+RlfY+8uDdl3/DoHT94AYOVXx2ha35fObWryw57CGu+ExHDnkSdqTP/ijQ+VSk1SSvEaH3tv6tUoX5rhC15DXok8MX5+fvj5+Zmkb48Kbjh7OhJ4vOCHNSstizvng6nepGqxRsyTSKVSWr7XGEsbObfOBukda9OvBW37tyApJoVz+y/x48Jfyc3OK7Yta3tr0pMySi7oCWTmMqo08GXHst90ZRqNhsvHr1G9cRWD9FGUdnO5OWg0el6s/Jw8NGoNNZtXM6gRo8zXEHlPw//1KnCTSKUSKtc1I/x26eKpEiI1LOyfjbmFBK9qUjoOkeHoVjBFlZejYfvyPLqNs3imsVMaNEo1OeHpOHUqyH4rkUqw8XMi+35KqdrOi80k5IM/kZpLsazogMu7lTF3tiqyrjpXSeqZSMxdrDB3KjytVlJkZlL8yrnz9fECY0WjgfP3Iqjj7Vmqtr1dHDk+bwR5ShVXw6JYu/8MMSnppR3yCyMzk1K1gjvf7S34Iddo4MKNCGpWLp3G8h6O7F0/irx8JTfuRbNhx9/EJppAo0xKVV93vt99Xlem0cDF6xHUrFqmVG2X83Tk969Gk5uv5GZQFBt//JvYhJevsTSI6STjYHIjJi8vjz179nD27Fk9T0zTpk3p2rXrUwN/AXJzc8nN1Z/7VGtUSCXPF5fg5KEAKOQtSY5NwdFd8dRzfWp68fk/i7GwNCc7I4f5764k4naBF+aPn04TFx5PQlQyvrW9GL7sfcpXKcP8nquKbK96kyq07t2U2Z2XPtfYn4WDix1mMjOSY/XjUJLjUilfrWyp2n6a9tvn7pGTmcvw5e+zZdZ2JBIJw5b1x0xmhpOnY6n6/TeZaaBWg92/mrV1lBD3sORGjFdVKb0/sMC1nIS0JA3Hf1Sy4cM8pm6QY2mtNVj2fZWPd3UpNZoYJwbmMaqMPFBrMLPX/y6Y2cvJi8kscbtWvg7Ih9bEwt0GZWouiftCeLD8Aj4LmiK1LLg1pJyMIP7Xe2hyVZh7WFN2agMkMsOtCXC0sUJmJi3kMUlMz6KCW8mvl+vhMcz+6Qhhccm42tswun1jtk3oxbsrviOrmGliY6Gw02pMStX/fyWlZuFdxqnE7d4MjmbRpsOERyXh4mjDsHebsmFOH96fsY2snFdEY0omXmVLrvHWvWgWrz9ERFQSzgpbhvZqwpcL+zJgytaXrrFUCCPGKJh0dVJwcDB+fn4MGjSIwMBA1Go1arWawMBABg4cSI0aNQgOLjoA9TFLly7FwcFBbwvlTrH12/Rrzt6073WbzLzkdtzDu1GMrvchExrPYt/Go3y4bTxeT7hsD24+zsWjVwm7EcEf20+zYtA6mr/rj6eve6G2fGqUZ/6eGXy/4BcuHbtW4jG9LJ6mPTUhjYW9PqVx5wbsTf+ePSnfYutgQ9Cl+2jUr8c3uVojM2q3MMOzgpSqDcwYusCCnAwN1/7Wxr/cPKci+Kqad0YVnq56XbCp5YpdQw/k5e2wqelC2Un1UWcrSb+gH4Rp5++J95zGlJveEAt3G6I3XkWdb/w4oNJy+k4Yx67e4150Av/cDWfcV3uws5LTvq5hvJCvAueuhvHH+SBCHiRw/lo4U1fsxs5GTtvGVU09NINxLjCUk2eDCAlPIOBqGNMW78bWWk6bpv8djYKSY1JPzJgxY6hVqxaBgYHY29vrHUtLS2PgwIGMGzeOI0eOFNvGzJkzmTpV/4VY3R0GF1v/7N6L3DlfYBiZy7V/Akd3BUkxKbpyR3cFIVfDnjp+Zb6SqEfzufcu36dqw4p0n9SJtaO/KrL+nfPa2ISylTyIvl+w6sLLrxwrjs/h4ObjbF+8+6l9vgipCemolCoc3fVXsDi6OZD8hNaS8Cztl45dY1DlCdg726FSqshMzWJn1GZO7Sx6tUlJsbEHqRTSk/XLM5I12DkaborHylaCS1kJiVFaIyzkioqkaA1ze+rHwXy/OI8KNaSMXvH8r5J/Fma2FiCVoErTn4ZUpeVi9pR4lhfux9occ3dr8uKyC5WbWZtj4W6Dla+C4Il/kHE5Dnv/0k2DPCY5MxulSo2znX6MjbOdNQlFBIOWlPScXMLjkynvojBYm89LSrpWo5OD/qouJwdrElNK7k37NxlZuUREJ1PuGV5kY1CsRoUNSQbW+CA6mXIehvXqGp3X4/nttcOknpgzZ86waNGiQgYMgL29PQsXLuTvv/9+ahtyuRx7e3u97WlTSdkZOUSFxOi28FsPSYxOpl7bmro61nZWVPOvxK2zxa/qKAqJVIqFRfFP5hXr+gCQGF3wi+tdvRyr/pjL0e/+ZOvsn16ov2ehzFcSdOk+9drWKhijREK9trW4dS7oKWe+OMVpT0tMJzM1i7r/VxOFm70ueNpQyMwllK0sIfhKgWdArdYQfEWFt5/hLu/cbA2J0Rpd7Mv/9TJnypdyJq8v2AC6jDSn11TDemckMimW3nZk3U7UlWnUGrLuJGHlqzBYP+ocJflxWcgcip/CfbywTKM0XP4mpUrN7Yex+FcpCMqUSMC/cnmuhkcbrB8rC3PKOytISDPcD+rzolSpuRsaS8MaXroyiQQa1vDixj0DapSbU87dgQQDGg3Pi1Kp5u79WBrW0tfYoJYXN+5GGawfK0tzyro7kJBimNjBl4VEY5hNoI9JPTEKhYKwsDBq1qxZ5PGwsDAUCoXRx/Hb2gP0+7gHkfdiiA6NY/CC3iRGJXNmT0Gg4YpjczizJ0C3amjokn5cOBRIXEQCVnZWtOnXnDqtqzOzw2JAmyelTb/mBBwMJC0xHd/a3oxePYhrf94i9HoEoJ1CWnFiLpeOXGXX6v26GBy1Sk1qQuHlzyVh12f7mb5tHEEXQ7gbEEz3yW9jaSPXrYyavm08CVFJbJm1HdAGA3tX104LmVvIcCnrTMU6Pjrj73m0A7Qf3JqI25GkxKdRvUkVxq4Zwu41B3gYZLib2WNadJfx86f5lKuspHxVKaf3KMnLhYZvaS/vHavycHCW0HGI1rhQ5muIi9DeDZRKDamJGqJC1FhYgUsZreGzf3M+fv5SHN0lpCVqOPaDEqkU6rbSGsh2TpIig3kVrhKcPAz/bOD4lg8xW24g97bHsoIDKccjUOeqsG+mDZiM/uY6MoUlrj0qA1ojIzcq49FnDcqUHHIi0pDKZVi4az0e8T/fxaaOK+bOVihTckn8PRiJVILdIw9LXnwWGRdisK7ugpmdOcrkXJIOhSIxN8OmlotB9X136jKL+rXn1oO4R0us62FlYc6e89qVPIv7tSc2NYPPD5wBtIGyFd2dATA3M8PNwZaqZVzJysvjQYI2BuyDd1pw6uZ9opPScXWwYWyHJqg0ag5dLng4cbazxsXOBq9H3pnKZVzIzMkjOiWNNAPnGfnp4CU+Gd2BO/djuBkSQ5+O9bG0NGf/n9qVPHPGdCA+KYMNO0/rNFYop9Uok5nh6mRLZW9XsnPyefgohm9Cv1acvhxCdEIaro62DO/ZFJVaw7F/CqbUnRyscVbYUM5d67moWN6FrJw8YhPSScs07Iq6nfsu8vH4jtwJieVWcDS93m6ApdycA49WK82e0JGExAw2bv/7ka4CjeYyM1yd7Kjs40pWTj6Rj7zF4wa24szFEGLi03BxsmV4L63G46ef0Kh4pPFRjGNFbxeysvOISUgnPcN4qwYFpsekRszw4cMZOHAgn3zyCW3btsXdXRsrEhsby4kTJ1i0aBETJkww+jh2rvgdSxtLJm8aha3Cmhun7zCz42K91TWeFd2xd7HT7SvcHJj+7XicPB3JTM0i9Fo4Mzss5vJxbTyLMk9J/ba1eXeS1miIf5DI37vPs31RQc6KFj0b4+jmwJsDWvLmgILlhTFhcQzwHWcQbX/+/A8KV3sGze+No4eCkCthzOq4WJd0zs3LRS9OxbmMIxsDV+r2e017h17T3uHqqZtMazPvubQDlKtalqFL+mPnZEtsWBzbl+xm12f7DaLp39RtJSMzFY7+oCQ9SUOZihKGLZTrppNS4jRInrA30pI0rBlf8AP11y4lf+1S4lurYBooNUG78igrDWwdwKeGGeM/kxeZd+ZlYPeGB8qMPBJ/D0GVlou8vB1lJ9fXLY9WJuYgeUKkMiWXiAXndPvJR8JJPhKOVRVHyk9vpK2TnEv0V9dRZ+ZhZmeBVSVHys/yR2an9cRIzaVkBaWQfCwCVVY+MnsLrKo44jXzjSJz05SGI1eCcLS1YmyHJrjYW3M3Mp4xm34jKUM7neThaIf6ifxCbva2/PLh+7r9wW0aMrhNQy4EP2DYeu2rStwc7Fg+oBMKG0uSM7K5fD+K99fsIDmzYLqsV9Paegnxtk3oBcDs7UfYe+GWQTWeOHcXR3srhvdshrPCmnvh8UxZtovkR1Nm7s72qJ/4Lro42vLd0oG6/f6dG9G/cyMu33rAuEXanCmuzrbMn/A2DraWpKRlczUokhFztpOSXqCx+5t19BLibZzbB4CFGw9z8K+bhtX4z10U9tYM79MMJ4U198Li+WDxryQ/WgLu7mKvd79xcbRl26pBuv1+XRvRr2sjLt98wIS52vxabs52zJ/cGXs7rcZrdyIZNetHUp7IrdOtXV29hHhfLuwLwOJ1hzh4yrAaBa8WEo2hM4+9IMuXL2ft2rXExMTobsIajQYPDw8mT57M9OnTX7jNt6TvGXqYAhMwPrj4/Cb/Bb6ONG7isVeB8N2+z670mmMT+99+NYo0778/h3Hm12lG76Pqgs8M0s7dOVMM0s5/BZMvsZ4xYwYzZswgNDRUb4l1hQqFE3gJBAKBQPA6IuJZjIPJjZjHVKhQQRguAoFAIBAInhuTrk66fPkyoaGhuv3vv/+eZs2aUb58eZo3b86OHTtMODqBQCAQCAyExkCbQA+TGjFDhgwhJET7np6vv/6aUaNG0bBhQz7++GMaNWrEiBEj2LJliymHKBAIBAJB6RFGjFEw6XTSvXv3qFxZuyT0yy+/ZO3atYwYMUJ3vFGjRixevJihQ4eaaogCgUAgEAheUUzqibG2tiYhIQGAyMhI3njjDb3j/v7+etNNAoFAIBC8johkd8bBpEZMx44d2bBhAwCtWrXi119/1Tv+888/U6lSJVMMTSAQCAQCwyGmk4yCSaeTli9fTrNmzWjVqhUNGzbk008/5dSpU/j5+XH37l3OnTvHb7/9ZsohCgQCgUAgeEUxqSemTJkyBAYG0qRJEw4fPoxGoyEgIICjR49Srlw5zpw5Q6dOnUw5RIFAIBAISo2YTjIOJs8To1AoWLZsGcuWLTP1UAQCgUAgMA7CADEKJvXECAQCgUAgEJQUk3tiBAKBQCD4zyM8MUZBGDECgUAgEBgZEc9iHIQRI3hluZfrbuohGJVbkZ6mHoLRqXApy9RDMDrm92NNPQTjkptn6hH8NxBGjFEQMTECgUAgEAheS4QnRiAQCAQCYyM8MUZBGDECgUAgEBgZERNjHMR0kkAgEAgEgtcSYcQIBAKBQGBsTPjupPXr1+Pj44OlpSX+/v4EBAQUW/fmzZv06NEDHx8fJBIJa9asKVRn3rx5SCQSva1atWp6db766itat26Nvb09EomElJSUQu087uPJ7UUT3wojRiAQCAQCI2Oq1w7s3LmTqVOnMnfuXC5fvkydOnVo3749cXFxRdbPysrC19eXZcuW4eHhUWy7NWrUIDo6WredPn26UDsdOnRg1qxZTx3fggUL9NqZMGHCC+kTMTECgUAgEPxHWb16NSNGjGDIkCEAbNy4kQMHDrBlyxY++uijQvUbNWpEo0aNAIo8/hiZTPZUI2fy5MkAnDp16qnjs7Oze2o7z0J4YgQCgUAgMDYGmk7Kzc0lLS1Nb8vNzS2yy7y8PC5dusSbb76pK5NKpbz55pucPXu2VHLu3btHmTJl8PX1pX///kRERJSonWXLluHs7Ey9evVYuXIlSqXyhc5/JYwYpVLJ1atXOXLkCEeOHOHq1avk5+ebelgCgUAgEBgGAxkxS5cuxcHBQW9bunRpkV0mJCSgUqlwd9dPHOru7k5MTEyJpfj7+7Nt2zYOHz7Mhg0bCA0NpUWLFqSnp79QOxMnTmTHjh2cPHmSUaNGsWTJEqZPn/5CbZh0OkmtVjNnzhzWr19Pamqq3jEHBwfGjx/P/PnzkUpfCVtLIBAIBAKTMnPmTKZOnapXJpfLX+oYOnbsqPtcu3Zt/P398fb25ueff2bYsGHP3c6TOmrXro2FhQWjRo1i6dKlz63JpEbMRx99xLZt21i2bBnt27fXWYuxsbEcPXqUTz75hLy8PJYvX27KYQoEAoFAUCokBmpHLpc/9w+8i4sLZmZmxMbqvxojNja2VHEo/0ahUFClShWCg4NL1Y6/vz9KpZKwsDCqVq36XOeY1MXx3Xff8f333zNq1Ch8fHywsrLCysoKHx8fRo4cyXfffce2bdtMOUSBQCAQCEqPCZZYW1hY0KBBA06cOKErU6vVnDhxgiZNmpROzxNkZGQQEhKCp2fp3gd35coVpFIpbm5uz32OST0x6enplClTptjjnp6eZGZmvpSxDJrfm47D22KrsOHmmTt8PnYzkcHFzxl2Ht2OLqPb4e7jCkD4zYf8sPAXLhy+oquz6o951GldQ++8/ZuOsnbMZgB8a3vTZ0Y3ajSvhoOLPbFhcezfdIzfPj9oUG3vjG3Pe9PewclDQcjVcNZP3MLdC0VbzN7VyzFofm8qN/DFw8eNL6ds5be1+uN5Hu2evu6MXDmQms2rYS6XcfHwFdZN3EJKnP60oaG4eTCNa7+lkp2iwsnHgqYjnHGrUvTTSlJEHpe2p5AQkktGvIrGQx2p9Y6DXp1LPyVzeee/pjjLyui1vpxu/+8vE4i8mkNWsgpzSwnu1eS8MdARRTkLwwsE3q/UgBF+/rha2nI7JZb5l45yLSm6yLqV7V2YXKslNZ08KGejYOHlY2wLuqBXZ2LNFkyq2UKvLCQtkXYHNwHgYGHJ5Jotae5RgTLW9iTlZnEsMojV1/8iI7/oQMLS8E73BvTq0xgnJ1tCQmJZt/Yod29HFVnX28eFwcNaUbmKBx6eCr784ii7f9HXN3BICwYOaalXFhGewNABm3T7b3epR5s3a1Cpigc2NnK6dlpFZobhtT2m86AW9BzdBkdXe+7fjmTDJ78SdKXogEivKh4MmNaJyrXK417emU1zd7Pnm1N6dfpP7cj7UzvqlT0IjmVk68W6fXO5jBGfdKdV1/qYW8i49Odt1s/6hZSEF4tfeF46D21Fz3HtcHSz5/7Nh2yYuZOgwLAi63pV9WTAR12oXNsbdy9nNs3+mT2b/tCr0//Dzrw/vbNe2YN7MYxsOk+3by6XMWJBT1p1a4i5XMalk7dYP/0nUuKNo7EkmCpj79SpUxk0aBANGzbkjTfeYM2aNWRmZupWKw0cOJCyZcvq4mry8vK4deuW7nNkZCRXrlzB1taWSpUqATBt2jS6dOmCt7c3UVFRzJ07FzMzM/r27avrNyYmhpiYGJ135vr169jZ2eHl5YWTkxNnz57l/Pnz/N///R92dnacPXuWKVOm8P777+Po6Pjc+kxqxLRu3Zpp06bx448/4uLioncsISGBGTNm0Lp1a6OPo/f0rnSb0JEVg9cRExrH4AV9WHp4NsNqTCE/t+gA44SHiXwz80ci70WDREK7Qa2Zv2cGY+p/SPith7p6BzYf59s5O3X7uVkFN8jKDXxJiU9j+YAviHuQQI2mVZm8aRRqlZrf1x82iLZWvZoy6tNBfD7mK26fD+bdyW+z9PDHDK02iZT4tEL15dZyokPj+OvXs4xePbhE2i2t5Sw7Mpv7V8P5sO18AAYv6M3CvR8xscksNBrDfptDTmdybksSzcdoDZcbe9M4ND+WXuvLYqUwK1RflavB3kOGbzNrzm5JLrZdRy9zOs0vCIiTmuk7hF0qyqnUyhZbFzNyM9Rc2pHCwXmx9NlUrlDd0vJ2eT9m1WvLJxcPczUxiiFVG7GtdR/eOrCJxNzCb4q2lJnzICOFQw/u8HG9N4toUUtQSjwDTm3X7avUat1ndys73KxsWXrlBMFpCZS1dmBhww64Wdkx/sxug+pr3caP0ePeZO2nh7h9K4oe773BslV9GNJ/IykpReizNCc6Kpk/T95mzIS3im039H4c06c+oU+l1jsut5RxISCECwEhDB/VxnCCiqBll3qMnNOdL2bu5G5gON2Gt2LRD2MZ0WoRqYkZhepbWlkQE5HI6f1XGDm3e7Htht2JYlbf9bp9lVJf46i579KobXWWjNpCZnoOYxf1ZPbmYUzrvsZg2h7TslsDRi7oyRcfbufupTC6jWrDop8nMKLJPFKLMJosrSyICUvg9O+XGbnovWLbDbsdyayea3X7KqVK7/iohe/R6K1aLBm2mcy0bMYu68PsbaOZ9vZKw4l7Tenduzfx8fHMmTOHmJgY6taty+HDh3XhGxEREXpxp1FRUdSrV0+3v2rVKlatWkWrVq10y6UfPnxI3759SUxMxNXVlebNm3Pu3DlcXV11523cuJH58+fr9lu21D5QbN26lcGDByOXy9mxYwfz5s0jNzeXChUqMGXKlELxPs/CpEbMxo0b6dSpE56entSqVUsvJub69etUr16d/fv3G30c3Se9zY+Ld3F270UAlg9axy8xm2nWrRGndv5T5Dnn9l/S2986+yc6j26HX+MqekZMblYuybEpRbZxZOtJvf2Y0DiqN6lCs+7+BjNiekzpzKGvT3Bk2ykA1o7+Cv9O9Wk/tA07l+8pVD/oYghBF0MAGLa0f5FtPkt7jWZVcfdxY0z96WSlZwOwYvB6fkvaSt02NQk8cd0g2h5z/fdUqrWzo2pbOwCaj3Em4lI2d0+kU7eHolB918pyXCtrvTQB3xVvxEikYO1Y/FfEr72d7rOdOzTs78juyVFkxCmx9zQvoZqiGVrtDXaGXGFX6DUAZl84RGvPSvT0rcOm24WXSl5Piub6Iy/Nh3VaF9uuUqMmIadob2dQajzjnjBWIjJS+PT6n3za+B3MJBJUBjRGe/Ty5+D+Kxw5pNW35tOD+DepRIe367Djx8L67t6J5u4drb7ho/6v2HZVKg3JScV7cx97b+rU9SrN8J+L7iP/j0M//cOxn88D8MVHP9OobQ3a9WnML+uPF6ofdDWCoKtaL82QmV2KbVelUpNcjMfB2s6Sdn0as2LCd1z95x4Aq6f+yOY/Z1Otvg93LoeVUpU+3Ue/yaEfznDsJ+3/7Itp22n0Vi3a9WvKL58fKVQ/6Eo4QVfCARjySfGGmkqlJjmu8EMXPNLYvxkrRm/h6um7AKye+C2bz86nWoMK3LkUWlpZhsGE704aP34848ePL/LYv/O4+Pj4PPNBc8eOHc/sc968ecybN6/Y4/Xr1+fcuXPPbOdZmDQmpnz58ly9epW9e/fSpUsXvLy88PLyokuXLuzbt4/AwEDKly9v1DF4VHDD2dORwOMFP6xZaVncOR9M9SbPGVgkldK6d1MsbeTcOhukd6xNvxb8GvcNX137lKFL+iG3evpUg7W9NelJhZ/KSoLMXEaVBr5cPn5NV6bRaLh8/BrVG1cxSB9FaTeXm4NGo+fFys/JQ6PWULN5teKaKhGqfA0JIXmUrW2pK5NIJZStY0nc3dJNC6RFK/lxyAN2jHrIH6vjyYgvPn9Bfo6aoBMZ2LnLsHEx7LOBuVRKTUdP/okN05VpgH9iQ6nnXLZUbfvYOfJP1wmc7DyG1Y3fwdPa/qn17czlZOTnGdSAkcmkVKniyeWLBT82Gg1cvhRK9RrlnnLmsylbzpEduyfy/Y6xzPykK25uT9dnLGTmZlSuVZ4rf9/VlWk0Gq78fRe/+hVK1XbZCq78cHEhW87MYfoXA3EtU+CKr1yrPOYWMgKf6PdhSByxD5OoVt+nVP3+G5m5GZXreHHlz9u6Mo1Gw5W/buPX0LdUbZet4MYP15ex5cJCpm8YimvZJzTW8dZqfKLfh8GxxD5IpFop+zUoJnztwH8Zk2fslUqldOzYUW/J1ouQm5tbKNGPWqNCKik8jVAUTh4KgELekuTYFBzdFU8916emF5//sxgLS3OyM3KY/+5KIm4XeGH++Ok0ceHxJEQl41vbi+HL3qd8lTLM77mqyPaqN6lC695Nmd256DX/L4qDix1mMjOSY/VjO5LjUilfrZQ/fk/RfvvcPXIycxm+/H22zNqORCJh2LL+mMnMcPJ8/rnO5yEnXYVGTaFpIysHM1IeljzXkFsVOa0muuBQ1pysZBWXd6Swb1Y0PT4vi4VVge1/62Aa579LRpmjwaGsjE7z3DEzN+xUkqOFNTKptJDHJCEnE1975xK3ezUxkunn93M/LRE3K1sm1mzBzrYD6HhoM5nKvCLGYcX4Gs3ZGRJY4j6LwsHBGjOZlORkfX3JSZmU9yq5vtu3oli5dB8PIpJwdrZlwJAWfLZuIMMHfUV2dmF9xsTeyUb7XfyXxyQ5IZ1yldyLOevZ3A0M49MpP/LwfhxObvb0n9KRlbsnMabtUrIzc3F0syc/V0lmWrbeeSkJ6TgZ2KCzd7J9pFHfY5Icl065SiVfCXP3ciifTvyWh8GxOLk70H/a26zcN40xLRY8oTG/sMZ4w2sUvHqY3IgBCAgI4OzZs7rkOx4eHjRt2lSX+vhpLF26VG/eDaACflSkRpH12/RrzuSNo3T7pTEYHt6NYnS9D7FxsKZFz8Z8uG08H7Seq/sxP7i5wEUcdiOCpOgUVp6Yi6evO9H39Ze8+dQoz/w9M/h+wS9cOnaNV52naU9NSGNhr0+Z+OUIuk3oiEat4eRPZwi6dB+N+vV4lCjfwFr32dkH3Cpb8NPIh9w/nUm1twqmkSq1sqVsXSuyklVc25PKiZXxdFnmgczi1c9t9Gf0fd3nu6nxXEmM4u8u4+jk5ccv96/q1bWVWfB1q14Epyaw9sbfL3uoJeLC+RDd59D7cdy+Hcn2n8fTqo0fhw9cfcqZrw8XTxZ4H8JuR3E3MJxvz82jRZd6HN1Relf9q8DFEzd1n8NuRXL3UijfBi6hRbcGHP2x6On+VxFTBfb+1zGpERMXF0ePHj04c+YMXl5eejExU6ZMoVmzZuzateupy62KSvzT3WFwsfXP7r3InfMFK3PM5do/gaO7gqSYFF25o7uCkKthTx2/Ml9JVIjW8Lp3+T5VG1ak+6ROrB39VZH175zXzkmXreShZ8R4+ZVjxfE5HNx8nO2LDRcwmZqQjkqpwtFdf+WNo5sDyU9oLQnP0n7p2DUGVZ6AvbMdKqWKzNQsdkZt5tTO2Kc1+8JY2pkhkUJ2in6gX3aqCmvH5/PGPQ9yWzMcypiTFqM/pWRhI8XCRopDGXPcqsj57v0Iws5lUamlrcH6Ts7LQqlW42Jpo1fuYmlDfLbhVu+l5+cSmp6Et62+t8xGZsHW1n3IzM9j9OlfUWrUxbRQMlJTs1Ap1Tg66utzdLJ5ajzLi5KZkcvDB0mULWtYb+DzkJaUqf0uutrplTu62JEcZ7gVNJlp2UTej6PMo5WDyXFpmMtl2Nhb6XkqFC52JBUTY1JS0pIyHmnU9344utkVG89SEjLTsokMiaVMBe3vglajeWGNrobXWCqEEWMUTPq4OHbsWFQqFbdv3yYsLIzz589z/vx5wsLCuH37Nmq1mnHjxj21Dblcjr29vd72tKmk7IwcokJidFv4rYckRidTr21NXR1rOyuq+Vfi1tm7xbZTFBKpFAuL4gM6K9b1ASAxuiCY1Lt6OVb9MZej3/3J1tk/vVB/z0KZryTo0n3qta1VMEaJhHpta3HrXNBTznxxitOelphOZmoWdf+vJgo3e13wtKEwM5fgUtGCyGs5ujKNWkPUtRzcqhoui2V+tpr0GOUzDSONBtT5hr1b5avV3EiOpqm7j65MAjRx9yEwMdJg/VjLzPGydSQ+uyAmy1ZmwbbWfchTqxj59y/kqVVPaaFkKJVqgoKiqd/AR1cmkUC9+j7cuvmw+BNfEEsrczzLOpJYxEogY6PMV3Hv+gPqNi+IRZNIJNRtXpXblw0XeGppbYGnjwtJj1IZ3Lv+gPw8pV6/ZX3dcC/nZPCgXmW+intXI6jbsiDuTSKRULdFNW5fvP+UM18MSxs5nj6uJD2aJr93NVyr8Yl+y1Z0x728M3cM2K/g1cSknpgjR47w119/FZmZr2rVqnz++ecvZYn1b2sP0O/jHkTeiyE6NI7BC3qTGJXMmT0FeSdWHJvDmT0BulVDQ5f048KhQOIiErCys6JNv+bUaV2dmR20+Rk8fd1p0685AQcDSUtMx7e2N6NXD+Lan7cIva5dceBTozwrTszl0pGr7Fq9XxeDo1apSU0wzBPErs/2M33bOIIuhnA3IJjuk9/G0kauWxk1fdt4EqKS2DJLuwxVZi7Du7o2mNLcQoZLWWcq1vHRGX/Pox2g/eDWRNyOJCU+jepNqjB2zRB2rznAw6Ci836UhlpdHfhzbTyuleS4Vrbgxr408nM0VHm0WunkmnhsnGW8MUD7BK7K15DyQBsToVZCVpKKxPu5yKykODxaVXRuaxLejayxdTUjK1nFpZ9SkEihYguttyAtJp/7pzMpW9cKKwczMhOVXNmVikwu0ZuKMhRb7gSwsnEXridFczUpiiFV3sBaZs6v97VTj6v8uxCTnc6qa6cAbTBwJXuXR5/N8LCyw0/hRpYyn/AMrRE9s24bTkQGE5mVirulLZNqtUSl0bAvQpsjQmvA9MVKZs4Hp3/F1lyOrbnWMEzKzUJtwODeXT+fZ/rMd7h7N5q7t6N49703sLQy5/BBrb4Zs7qQkJDON19p9clkUrwfeRtk5ma4uNhRsZI72dl5REVq9Y0c25ZzZ+4RG5uKs4stg4a0RK1Wc/L4LV2/jk42ODnZUqasEwAVfN3IzsojLjaV9PQcDMlvX53kg8/e597VB9y9Ek634a2RW1lwbKd2tdIHa94nMSaVbcv26XR5VfZ49FmGs6cDvtXLkp2VS3RYAgDDZ3fl/PGbxD5Mwtndgfc/6IhapeHPPZcByErP4eiOc4yY0530lCyy0nMYs7Anty6GGtyIAfht43E++GIw966Ec/eydom13NqCYz9pp30+WDeYxJgUti3aU6CxqjZBmszCDGcPBb41y5GdmUt0aLxW47wenD96jdgHSTh7OPD+9C6oVWr+3H2hQOOPZxixoCfpyZlajUt7cysg5NVZmYSYTjIWJjVi5HI5aWnF/1inp6e/lHdC7FzxO5Y2lkzeNApbhTU3Tt9hZsfFeqtrPCu6Y+9S4ApWuDkw/dvxOHk6kpmaRei1cGZ2WKxbCaTMU1K/bW3enaQ1GuIfJPL37vNsX7RL10aLno1xdHPgzQEteXNAQVKumLA4Bvg+3QP1vPz58z8oXO0ZNL83jh4KQq6EMavjYl3SOTcvF704FecyjmwMLMit0GvaO/Sa9g5XT91kWpt5z6UdoFzVsgxd0h87J1tiw+LYvmQ3uz4zznL5is1tyElVcemnZLKSVThXsKDjXHesHwX7ZsYrkTwRa5uVpGT31IIkcdf2pHFtTxqeNeR0Xqy9oWYmKvnj03hy0lVYOZjh7ien63JPrBy0bZpZSIi5lcuNfWnkZqqxcjDDo4Yl7yzzLDI3TWk58OA2TpbWTK7VEhdLG26nxDLk1E4Sc7XTLZ429qif8Fe7Wdmxv8Nw3f4Iv8aM8GvMubhw+v/xIwAeVvasadoVhYUVSblZXIp/SM/j20h6lHemhpMH9Vy0AeAnO4/VG0/LfeuJzDRc4sJTf9zGQWHD4KGtcHSyISQ4lpnTdpDyKNjXzd1Bz2hydrFj05YCfb36NqFX3yZcDQzng0k/AODqasesud2wt7ciNSWLG9cfMGH0NlJTC/LOdOlaXy8h3pp1AwFYsWQfRw8bNjbtr32BODjb8v60Tji52hNy6yGfDNigSzrnVtZR77vo5O7A+qMzdPs9R7el5+i2XDt7jxnvfQGAi6eCGesGYe9oQ2pSBjcDQpjyzmpSn1jhuGn+btRqDbO/Gvoo2d0d1s/62aDadBr3XMLB2Y73Z3TByc2ekBsP+aT3F7qkc27lnPSW7zp5KFh/cnaBxvHt6Dm+HdfOBDGj22qtxjIKZmwaptWYmMHN88FM6bhcL7fOpk9+Qa3RMHvrKK3Gk7dYP8Ownu1SI4wYoyDRGDrz2Aswbtw4Dhw4wGeffUbbtm2xt9fOpaalpXHixAmmTp1K586d+eKLL16o3bekxSdNErw+tL/5Cs1nG4ENV1uZeghGp8KX//07t/l9w8Z5vXLkvtyVXKbgUPxGo/dRb+xnBmkn8MspBmnnv4JJPTGrV69GrVbTp08flEolFhbaHCp5eXnIZDKGDRvGqlVFL0cWCAQCgeB1QUwnGQeTTydt2LCB5cuXc/HiRd2bNj08PGjQoIHOMyMQCAQCwWuNMGKMgkmNmAkTJtCrVy9atGhBmzbGfW+JQCAQCAQmQxgxRsGkS6zXr19P69atqVKlCsuXL9cluxMIBAKBQCB4FiZPK3r06FE6derEqlWr8PLyomvXruzfvx+12rAJtQQCgUAgMBUSjWE2gT4mN2Jq1arFmjVriIqK4ocffiA3N5du3bpRvnx5Pv74Y4KDg5/diEAgEAgErzLiBZBGweRGzGPMzc3p1asXhw8f5v79+4wYMYIff/yxyER4AoFAIBAIBK+MEfMkXl5ezJs3j9DQUA4fPmzq4QgEAoFAUCokGo1BNoE+Jl2d5O3tjZlZ8dlNJRIJb7311ksckUAgEAgERkDYH0bBpEZMaOir814LgUAgEAgErxcmNWIEAoFAIPhfQKwsMg7CiBEIBAKBwNgII8YovJKBvQKBQCAQCATPQnhiBK8s97NdTT0EoyIJtzL1EIyO5PQ/ph6C0VGaegCC1wIxnWQchBEjEAgEAoGxEUaMURBGjEAgEAgERkZ4YoyDiIkRCAQCgUDwWiI8MQKBQCAQGBvhiTEKwogRCAQCgcDIiOkk4yCmkwQCgUAgELyWCE+MQCAQCATGRry80Si8EkZMTEwM58+fJyYmBgAPDw/8/f3x8PAw8cgEAoFAICg9YjrJOJjUiMnMzGTUqFHs2LEDiUSCk5MTAElJSWg0Gvr27cumTZuwtrY25TAFAoFAIBC8gpg0JmbSpEkEBARw4MABcnJyiI2NJTY2lpycHA4ePEhAQACTJk0y5RAFAoFAICg9GgNtAj1MasTs2rWLbdu20b59e8zMzHTlZmZmtGvXji1btvDrr7+acIQCgUAgEJQeidowm0AfkxoxarUaCwuLYo9bWFigVov/mkAgEAgEgsKYNCamc+fOjBw5km+++YZ69erpHQsMDGTMmDF06dLlpYxl0PzedBzeFluFDTfP3OHzsZuJDI4ptn7n0e3oMrod7j7alxSG33zIDwt/4cLhK7o6q/6YR53WNfTO27/pKGvHbAbAt7Y3fWZ0o0bzaji42BMbFsf+Tcf47fODBtX2ztj2vDftHZw8FIRcDWf9xC3cvRBcZF3v6uUYNL83lRv44uHjxpdTtvLbWv3xPI92T193Rq4cSM3m1TCXy7h4+ArrJm4hJS7VoNoe8+BoLBH7YshLzcfWy5oqg71wqGRbZN2MB9nc/zWS9PuZ5CTkUXlAebw66QeR3/81ktBdUXpl1mUsafJpLd3+7a/DSL6eRm5yHmaWZjhUsaVS33LYlDXOix3fr1eH4f4NcLWx4XZcPAuOn+RadGyRdSu7ODOpeRNqerhRzsGBRSdOse1ioF6dic0aM7F5E72ykMQk2n/9LQAOlnImNW9Ccx9vytjbk5SdxbGgED77+x8y8vIMrs/Q1+mAue8xcG4vvbKIO5EMqz5Zt28uN2f0pwNp3bsZ5nJzLh65wufjvjbadWpojU/Se0Y3hi/tz+61B9gwZZuu/GV/F/8XNJYIMRVkFEzqiVm3bh3u7u40aNAAZ2dn/Pz88PPzw9nZmYYNG+Lm5sa6deuMPo7e07vSbUJH1o75igmNZ5KTmcvSw7Mxl5sXe07Cw0S+mfkj4xrOYFyjj7hy8gbz98zAu3o5vXoHNh+nl+cI3bZ5+g+6Y5Ub+JISn8byAV8wvOYUti/ZzdAl/eg6roPBtLXq1ZRRnw7ihwW/MKbBDO5fC2fp4Y9RuNoXWV9uLSc6NI5vZv5IYnRyibRbWstZdmQ2aDR82HY+k5t/gsxCxsK9HyGRSAym7TGxZxO59/0DKvQoQ6MlNbD1tubKsiDyUvOLrK/OU2HlJqdi33JYKIr/H9uUs6L5hrq6rcHcanrH7StY4ze6Ao0/rUXdmVVAA4FLg9CoDX+36lStCrPatOSLM+fouu1H7sQlsLXXuzhZF20wWcpkPEhJZeWfp4nLyCy23aD4BBqv26Tb+vy4U3fMzdYWN1tblp38m05bvmP6gaO09PVhWad2BtdnjOsUIPRGhN73b0qLT/SOj/lsMI07N2Rhr9V80HouzmWcmLdrmkG1PcZYGgGqNKzI2yPfIuRqmF75y/4u/i9oLCkSjWG2krB+/Xp8fHywtLTE39+fgICAYuvevHmTHj164OPjg0QiYc2aNYXqzJs3D4lEordVq6Z/f/zqq69o3bo19vb2SCQSUlJSCrWTlJRE//79sbe3R6FQMGzYMDIyMl5Im0mNGEdHRw4dOsTNmzdZtWoVAwcOZODAgaxatYqbN29y8OBBFAqF0cfRfdLb/Lh4F2f3XiT0egTLB63DuYwjzbo1Kvacc/svEXAokMjgGCLvRbN19k9kZ+Tg17iKXr3crFySY1N0W1Z6tu7Yka0n+XLyVq79dYuY0DhO/Pg3R7edpFl3f4Np6zGlM4e+PsGRbaeIuP2QtaO/Ijcrj/ZD2xRZP+hiCJunf8+pnf+Qn1u0EfAs7TWaVcXdx42VQ9YTdiOCsBsRrBi8nioNfanbpqbBtD0m4kAsZdu4Uqa1K7blrKg2zBszCylRpxKKrG9f0ZbK/cvj0dQZqaz4m5zEDOQKc91mYa9v8JRt64ajnx1WrnLsK9jg26ssuYl5ZMfnGlQfwNBG9dl59Qa7rt8iODGJT44cJztfyXu1iv57Xo+JZfmpvzlwO4g8lbLYdpVqNQmZWbotOTtHd+xeQiLj9+znj5D7RKSkci7iAav/OkObihUwM/CPgzGuUwC1Uq33/UtLTNcds7a3psPQNmz84FuunLzBvcv3WTV0PTWaVcPPv7JB9RlTo6WNJTN/mMhnIzeSkaxvsL7s7+L/gsYSo9EYZntBdu7cydSpU5k7dy6XL1+mTp06tG/fnri4uCLrZ2Vl4evry7Jly56a5qRGjRpER0frttOnTxdqp0OHDsyaNavYNvr378/Nmzc5duwY+/fv56+//mLkyJEvpO+VyNjr5+fHkCFDmDlzJjNnzmTIkCGFrDpj4VHBDWdPRwKPX9eVZaVlced8MNWbVH2uNqRSKa17N8XSRs6ts0F6x9r0a8Gvcd/w1bVPGbqkH3Kr4mOAQHtjTU96MUu0OGTmMqo08OXy8Wu6Mo1Gw+Xj16j+L2OrpBSl3VxuDhqN3k0pPycPjVpDzeaG/b+qlWrSQzNxqlnwpCeRSnCsaU/qvdL9HbNicvl7zBXOTLrGjXUh5CQUb5yoclRE/5mApZscS+en/49fFHOplJoe7pwJj9CVaYB/wiKoV9azVG37ODpyZuwI/hg1lE87d8DTzu6p9e3kcjLy8lAZMHGXMa/TMpU92PFwE98Fr+Oj7yfiWt5Fd6xKA1/MLWR6/T64G0VseDx+TQzz/XiMMTVOWDeM8wcvE3jieqFjL/O7+L+g8XVk9erVjBgxgiFDhlC9enU2btyItbU1W7ZsKbJ+o0aNWLlyJX369EEulxfbrkwmw8PDQ7e5uLjoHZ88eTIfffQRjRs3LvL827dvc/jwYb7++mv8/f1p3rw5X3zxBTt27CAqKqrIc4ocx3PXNBJ5eXns2bOHs2fP6iW7a9q0KV27dn1q4C9Abm4uubn6Py5qjQqpxKyYM/Rx8lAAkByboleeHJuCo7viqef61PTi838WY2FpTnZGDvPfXUnE7Ye643/8dJq48HgSopLxre3F8GXvU75KGeb3XFVke9WbVKF176bM7rz0ucb+LBxc7DCTmZEcqz8vnByXSvlqZUvV9tO03z53j5zMXIYvf58ts7YjkUgYtqw/ZjIznDwdS9Xvv8lPU6JRg4WDvpfEwsGcrKicYs56NvaVbKg+ugLWnpbkpeQTuiuSS/Pv4L+iJjKrgmvr4dE4grc/QJWrxrqMJfVmVUEqM+yzgaO1FTKplMTMLL3yhKwsfJ1L/ve8Eh3DjINHuJ+UjJutDROaNWZH/1502vIdmXmFn4odrSwZ19SfHVcK/5CUBmNdp3fO32PVkPU8uBuFs6cj7895j8/+WsCIWlPJzsjB0UNBXm4+man6f9fk2FTdfcFQGEtj695NqVzfl3FvfFTk8Zf5Xfxf0FgaDJXsrqjfPLlcXqTBkZeXx6VLl5g5c6auTCqV8uabb3L27NlSjePevXuUKVMGS0tLmjRpwtKlS/Hy8nru88+ePYtCoaBhw4a6sjfffBOpVMr58+fp3r37c7VjUk9McHAwfn5+DBo0iMDAQNRqNWq1msDAQAYOHEiNGjUIDi46IOwxS5cuxcHBQW8L5U6x9dv0a87etO91m8y85Hbcw7tRjK73IRMaz2LfxqN8uG08Xn4FMTEHNx/n4tGrhN2I4I/tp1kxaB3N3/XH09e9UFs+Ncozf88Mvl/wC5eOXSt0/FXjadpTE9JY2OtTGnduwN7079mT8i22DjYEXbpvlHgRY+BSV4F7YyfsvK1xruNAnRlVyM9UEXcuSa+eR3Mn3lhag/pzqmHtYcmNtSGo8l6PFXV/3Q/j0N173I1P4O/QcIb9sgd7SzmdqhV+ara1sGBzz24EJyby+ZlzJhjti3Ph8BX++vUcodcjuHj0Kh+/vQRbhQ2tejU19dAMgms5Z8auGcLS99cWOxXzun8X/1MaDZQnpqjfvKVLi37wTUhIQKVS4e6u/5vj7u6ucxqUBH9/f7Zt28bhw4fZsGEDoaGhtGjRgvT09Gef/IiYmBjc3Nz0ymQyGU5OTi80NpN6YsaMGUOtWrUIDAzE3l4/8CstLY2BAwcybtw4jhw5UmwbM2fOZOrUqXpl3R0GF1v/7N6L3DlfYBiZy7V/Akd3BUkxKbpyR3dFoQCyf6PMVxIVov1j37t8n6oNK9J9UifWjv6qyPp3zt8DoGwlD6LvF6wq8fIrx4rjczi4+TjbF+9+ap8vQmpCOiqlCkd3B71yRzcHkp/QWhKepf3SsWsMqjwBe2c7VEoVmalZ7IzazKmdRa+mKSnm9jIkUgoF8eal5j81aPeF+7GRYe0pJytG37sjs5Yhs5Zh7WmJQ2Ub/hweSPyFZDyaORus7+SsbJRqNc42+pmrXaytSfiXd6Y0pOfmEpqUjPe/4tBsLMzZ0qs7mXn5jNm9D6WB0x4Y8zp9kszULB4GRVGmknaePzkmBQu5OTYO1nreGEd3B717gSEwhsbKDXxxdFew4dIKXZmZzIxaLf3oOq4DnSz7oVarX9p38X9B46tAUb95T5v2MQYdO3bUfa5duzb+/v54e3vz888/M2zYsJc6FpMaMWfOnCEgIKCQAQNgb2/PwoUL8fd/epBrUW60p00lZWfkkJ2hb+UlRidTr21NndFibWdFNf9K7NtYvPFUFBKpFAuL4n84K9b10fX3GO/q5Vh5Yi5Hv/uTrbN/eqH+noUyX0nQpfvUa1uLf36/oB2jREK9trX4ff1hg/ZVnPbHgZR1/68mCjd7zu69aNB+pTIpdhVsSLqRhmsjretYo9aQfDONcu0Ke7xKijJHRXZsLvIWT5nefPSkpFYa9ukvX63mRkwsTb3Lc/xeCAASoKlPeb6/dNVg/Vibm+OlULAn87auzNbCgq29upOnUjFq1+/kqVQG6+8xL+s6tbSxxLOiB0k//AVA0KX75Ocpqde2Fqd3nwegXJUyuHu7cvtfsW2lxRgaA09cZ0Qt/R+zaVvG8uBOFDtX7CmUY8vY38X/BY2lwVDTScVNHRWFi4sLZmZmxMbqG3OxsbEGfTehQqGgSpUqz5w5eRIPD49CwcVKpZKkpKQXGptJjRiFQkFYWBg1axYdQR4WFvZSVif9tvYA/T7uQeS9GKJD4xi8oDeJUcmc2XNBV2fFsTmc2ROg+zIOXdKPC4cCiYtIwMrOijb9mlOndXVmdlgMaPMWtOnXnICDgaQlpuNb25vRqwdx7c9bhF7XBmj61CjPihNzuXTkKrtW79fF4KhValIT0gyibddn+5m+bRxBF0O4GxBM98lvY2kj58jWkwBM3zaehKgktszaDmiD8x4vlTa3kOFS1pmKdXzIzsjReV6epR2g/eDWRNyOJCU+jepNqjB2zRB2rznAw6DnD9h6XrzedufWhlDsfW2wr2RDxKFYVLlqPFtpA81ufnkfuaM5lfqWB7TBwJkPcx591pCbnE96WBZmllKsPSwBuPdDBC71FVi6yslNziP0lygkUgnuTbXv98qOzSH2bBJOtR2wsJeRk5RH+O8xSC0kuNR1KGKUpWPLhcusfLs912PiuBYdw+CG9bAyN+fX6zcBWPl2e2LTM1j11xlAGwxcycX50Wcz3G1t8XNzJSsvj/AUbczCR//Xgj+C7xOZmo6bnQ2TmjdBrVGz/9ZdQGvAbOv9LpYyGR/sP4yt3AJbudaIS8rKRm3A4F5jXKcjVw7g3L5LxIbH41zGkYHzeqNWqTn5k/ZvlJWWxeEtfzD600GkJ2WQlZbNuM+HcvOfu9x+5DU1JIbWmJ2RQ9jNB3p95GTmkpaUrlf+Mr+L/wsaS4wJ3mJtYWFBgwYNOHHiBN26dQO0SWZPnDjB+PHjDdZPRkYGISEhDBgw4LnPadKkCSkpKVy6dIkGDRoA8Mcff6BWq5/pvHgSkxoxw4cPZ+DAgXzyySe0bdtWN28XGxvLiRMnWLRoERMmTDD6OHau+B1LG0smbxqFrcKaG6fvMLPjYr05WM+K7ti7FKzcULg5MP3b8Th5OpKZmkXotXBmdlisi8xX5imp37Y2707SfonjHyTy9+7zbF+0S9dGi56NcXRz4M0BLXlzQEtdeUxYHAN8xxlE258//4PC1Z5B83vj6KEg5EoYszou1iWBcvNy0Zs3di7jyMbAlbr9XtPeode0d7h66ibT2sx7Lu0A5aqWZeiS/tg52RIbFsf2JbvZ9dl+g2j6N+5NnMlLU3L/10hyU/Kx87am7kdVkD+aTspJyOPJFcG5yfkEzLyp24/YH0PE/hgUfnY0mKNdzZCTlM+NL+6Tn6HEwl6GQ1U7Gi700y2zlppLSbmbQcShWJSZKiwcZCj87Gg4369QkLEhOHgnCGdrKyY3b4KrjTW34uIZ+vNvJGZpp0HK2NvpGRVutrbsG/K+bn+Ef0NG+DfkfMQD+v+kfZWHh50dn3XphKOVJUnZ2Vx8GEXP73eQlK1NA1DD3Y26ZbSrn/4YNVRvPK02fENkmmEMbTDOdepS1plZ2ydh52xHanwaN07fYWKTWXoPCBumbEOjVjPn12mYy2VcOnKVz8d9bTBdxtb4PLzM7+L/gsbXjalTpzJo0CAaNmzIG2+8wZo1a8jMzGTIkCEADBw4kLJly+riavLy8rh165buc2RkJFeuXMHW1pZKlSoBMG3aNLp06YK3tzdRUVHMnTsXMzMz+vbtq+s3JiaGmJgYnXfm+vXr2NnZ4eXlhZOTE35+fnTo0IERI0awceNG8vPzGT9+PH369KFMmTLPrU+i0ZjAPHyC5cuXs3btWmJiYnSJiTQaDR4eHkyePJnp06e/cJtvSd8z9DAFJqDyxZc7z/uyOXqsgamHYHQqzPzH1EMQCJ7JMfUvRu+jZdeVz670HPz1+4cvfM66detYuXIlMTEx1K1bl88//1zn7WjdujU+Pj5s27YN0M6AVKhQoVAbrVq14tSpUwD06dOHv/76i8TERFxdXWnevDmLFy+mYsWKuvrz5s1j/vz5hdrZunUrgwcPBrTJ7saPH8++ffuQSqX06NGDzz//HFvborOtF4XJjZjHhIaG6i2xLuqP+LwII+a/gTBiXn+EESN4HXgpRsw7BjJi9r64EfNfxuR5Yh5ToUKFUhkuAoFAIBAI/rcwecbedevWMXDgQHbs2AHA999/T/Xq1alWrRqzZs1CqSw+ZbpAIBAIBK8Dpnx30n8Zk3piFi1axIoVK2jXrh1TpkwhPDyclStXMmXKFKRSKZ999hnm5uZFzqsJBAKBQPDa8Col3vsPYVIjZtu2bWzbto13332Xq1ev0qBBA7799lv69+8PQLVq1Zg+fbowYgQCgUDweiNsGKNg0umkqKgo3XsT6tSpg1QqpW7durrj9evXf6EXQQkEAoFAIPjfwaRGjIeHh249+r1791CpVLp9gJs3bxZ6t4JAIBAIBK8bIibGOJh0Oql///4MHDiQrl27cuLECaZPn860adNITExEIpGwePFievbsacohCgQCgUBQel6NbCb/OUxqxMyfPx8rKyvOnj3LiBEj+Oijj6hTpw7Tp08nKyuLLl26sHDhQlMOUSAQCAQCwSuKSY0YqVTKrFmz9Mr69OlDnz59TDQigUAgEAgMj5gKMg6vTLI7gUAgEAj+swgjxiiYPNmdQCAQCAQCQUkQnhiBQCAQCIyMRAT2GgVhxAheWSKzFKYeglGxESmQBIL/HdSmHsB/EzGdJBAIBAKB4LVEeGIEAoFAIDAyYjrJOAgjRiAQCAQCYyNsGKMgjBiBQCAQCIyN8MQYBRETIxAIBAKB4LVEeGIEAoFAIDAyImOvcRBGjEAgEAgExkZMJxkFkxsxMTExnD9/npiYGAA8PDzw9/fHw8PDxCMTCAQCgUDwKmMyIyYzM5NRo0axY8cOJBIJTk5OACQlJaHRaOjbty+bNm3C2traVEMUCAQCgcAgSESyO6NgssDeSZMmERAQwIEDB8jJySE2NpbY2FhycnI4ePAgAQEBTJo0yVTDEwgEAoHAcGg0htkEepjMiNm1axfbtm2jffv2mJmZ6crNzMxo164dW7Zs4ddffzXV8AQCgUAgELzimGw6Sa1WY2FhUexxCwsL1OqX538bNL83HYe3xVZhw80zd/h87GYig2OKrd95dDu6jG6Hu48rAOE3H/LDwl+4cPiKrs6qP+ZRp3UNvfP2bzrK2jGbAfCt7U2fGd2o0bwaDi72xIbFsX/TMX77/KBBtb0ztj3vTXsHJw8FIVfDWT9xC3cvBBdZ17t6OQbN703lBr54+Ljx5ZSt/LZWfzzPo93T152RKwdSs3k1zOUyLh6+wrqJW0iJSzWotsck//GAxMNhqFLzkJe3xb1fNax8HYqsmxuZQfyeEHLC01Am5uDWpwpOb3nr1Yn/PYTEvff1yiw8rPFd3Ey3H/PdLTJvJaFMyUUqN8OqkgLXnpWRe9oYXiDQu3kdBrVpgIu9DUGR8SzbdZIbEbFF1q3o4czYTk3wK+dGWWcHVuw+xY9/BurVGd2hMWM6NtErC41NotuSb3X7PZrUomODqviVd8PWUk7zj74kPTvX8OIw/HX6JL1ndGP40v7sXnuADVO26cpf9nUqNOrzumosEcKJYhRM5onp3LkzI0eOJDAwsNCxwMBAxowZQ5cuXV7KWHpP70q3CR1ZO+YrJjSeSU5mLksPz8Zcbl7sOQkPE/lm5o+MaziDcY0+4srJG8zfMwPv6uX06h3YfJxeniN02+bpP+iOVW7gS0p8GssHfMHwmlPYvmQ3Q5f0o+u4DgbT1qpXU0Z9OogfFvzCmAYzuH8tnKWHP0bhal9kfbm1nOjQOL6Z+SOJ0ckl0m5pLWfZkdmg0fBh2/lMbv4JMgsZC/d+hEQiMZi2x6QFxBC38y4u7/jiM9cfeXk7Hnx2GWVaXpH11XkqLFytcOtRGTOHpxjSZWyotLqlbvP6qJHecUtvezyH1KDCoqaUn1ofNBoerL6MRm34u1X7elWY1r0lm46co8/KH7kblcCGMe/iZGtVZH1LCxkPE1L5fN9p4lMzi203ODqBNrM36bbBa3cWauefO+F8c+yCQfX8G2Ncp4+p0rAib498i5CrYXrlL/s6FRoL8zpqLCkSjcYgm0Afkxkx69atw93dnQYNGuDs7Iyfnx9+fn44OzvTsGFD3NzcWLdu3UsZS/dJb/Pj4l2c3XuR0OsRLB+0DucyjjTr1qjYc87tv0TAoUAig2OIvBfN1tk/kZ2Rg1/jKnr1crNySY5N0W1Z6dm6Y0e2nuTLyVu59tctYkLjOPHj3xzddpJm3f0Npq3HlM4c+voER7adIuL2Q9aO/orcrDzaD21TZP2giyFsnv49p3b+Q35ufom012hWFXcfN1YOWU/YjQjCbkSwYvB6qjT0pW6bmgbT9piko+E4tCyHonlZ5GVs8Rjgh9TCjNTTkUXWt6rggFuvKtj7eyCRFf8VkJhJkDnICzY7fYNH0aoc1lUdsXCxwtLbHpfulVAm5ZCfkF1MiyVnQOv67P7nBr+fv8X92CQW/XycnDwl3RoX/fe8GRHLZ3v/5nBgEHlKZbHtKlVqEtOzdFtKZo7e8R//DGTL8QtcC4s2qJ5/Y4zrFMDSxpKZP0zks5EbyUjWN+Ze9nUqNBbmddQoeLUwmRHj6OjIoUOHuHnzJqtWrWLgwIEMHDiQVatWcfPmTQ4ePIhCoTD6ODwquOHs6Ujg8eu6sqy0LO6cD6Z6k6rP1YZUKqV176ZY2si5dTZI71ibfi34Ne4bvrr2KUOX9ENuVfyTP4C1vTXpSRkvLqQIZOYyqjTw5fLxa7oyjUbD5ePXqP4vY6ukFKXdXG4OGo3eTSk/Jw+NWkPN5tUM0u9jNEo1OeHp2Pg56cokUgnW1Z3IDimdKzkvNovgqX8SMuM0UV9dJz+xeONEnasi9UwU5i5WmDtZlqrffyMzk+JX3p1zQRG6Mo0GzgVFUNvHs1Rte7s6cmzBCA58MpQlAzrg4WhX2uG+MMa8TiesG8b5g5cJPHG90LGXeZ0Kjf8NjaVCBPYaBZPniXnsgTEVTh4KAJJjU/TKk2NTcHRXPPVcn5pefP7PYiwszcnOyGH+uyuJuP1Qd/yPn04TFx5PQlQyvrW9GL7sfcpXKcP8nquKbK96kyq07t2U2Z2XlkaSDgcXO8xkZiTH6v+YJ8elUr5a2VK1/TTtt8/dIyczl+HL32fLrO1IJBKGLeuPmcwMJ0/HUvX7b5TpeaDWILPXNw5l9hZkRRc/jfIsrHwd8BxaEwsPa5SpuSTuvU/4sotUWNAEM6uCr03yHw+I+/UemlwVFh7WlP+g/lO9OyXB0cYKmZmUxPQsvfLE9CwquJX873k9PIZPth8hLC4ZV3sbRnVozNaJveix7DuynvJUbGiMdZ227t2UyvV9GffGR0Uef5nXqdD439BYKsQSa6NgUiMmLy+PPXv2cPbsWb1kd02bNqVr165PDfx9TG5uLrm5+oGGao0KqcSsyPpt+jVn8sZRuv3SGAwP70Yxut6H2DhY06JnYz7cNp4PWs/V/Zgf3HxcVzfsRgRJ0SmsPDEXT193ou/rB2T61CjP/D0z+H7BL1w6do1XnadpT01IY2GvT5n45Qi6TeiIRq3h5E9nCLp03yjxIsbAtpZLwU55O6x8HQiZfpr0i7EoWhTckO0be2BTwwllSh5JR8KI3HgN75mNkJoXff29Spy5Hab7fC8qgevhMRyaO4z29arw27mbphuYAXAt58zYNUOY0W5hsdMUr/t1KjRqeV00ingW42AyIyY4OJj27dsTFRWFv78/7u7ugDaod+PGjZQrV45Dhw5RqVKlp7azdOlS5s+fr1dWAT8qUqPI+mf3XuTO+YJIeXO59k/g6K4gKSZFV+7origUQPZvlPlKokK0xte9y/ep2rAi3Sd1Yu3or4qsf+f8PQDKVvLQM2K8/Mqx4vgcDm4+zvbFu5/a54uQmpCOSqnC0V1/lY6jmwPJT2gtCc/SfunYNQZVnoC9sx0qpYrM1Cx2Rm3m1M6iV9OUFJmdBUglhYJ4lWl5yBzkBuvHzNocC3dr8uKyCpVrj9lgVdGBoAknybgch71/6aZ5niQ5MxulSo2znX7iR2c7axL+5Z0pDenZuYTHJ1PeRWGwNp8HY1ynlRv44uiuYMOlFboyM5kZtVr60XVcBzpZ9kOtVr+061RoTClRm6+aRsGrh8mMmDFjxlCrVi0CAwOxt9ePXE9LS2PgwIGMGzeOI0eOPLWdmTNnMnXqVL2y7g6Di62fnZFDdob+0unE6GTqta2pM1qs7ayo5l+JfRuf3ve/kUilWFgUv6KpYl0fXX+P8a5ejpUn5nL0uz/ZOvunF+rvWSjzlQRduk+9trX453ft6hKJREK9trX4ff1hg/ZVnPa0xHQA6v5fTRRu9pzde9Gw/cqkWHrbkXk7Cbv6bgBo1Bqybifh2Ka8wfpR5yjJi8vCvknxxsnjBy11vmGfuJQqNbcfxOJfpTwnr4cAIJGAf5Xy7Pj7qsH6sbIwp7yzggNptw3W5vNgjOs08MR1RtTSvy9M2zKWB3ei2LliT6H0Dca+ToXG/4bGUiE8MUbBZEbMmTNnCAgIKGTAANjb27Nw4UL8/Z+9SkculyOX6z9xFzeVVBy/rT1Av497EHkvhujQOAYv6E1iVDJn9hQsK11xbA5n9gTovoxDl/TjwqFA4iISsLKzok2/5tRpXZ2ZHRYD2rwFbfo1J+BgIGmJ6fjW9mb06kFc+/MWode1AZo+Ncqz4sRcLh25yq7V+3UxOGqVmtSEtBfSUBy7PtvP9G3jCLoYwt2AYLpPfhtLGzlHtp4EYPq28SREJbFl1nZAG5z3eKm0uYUMl7LOVKzjQ3ZGjs7z8iztAO0HtybidiQp8WlUb1KFsWuGsHvNAR4GRRlE15M4tfMm+pubWPnYY1nBnuTjEahzVTg0KwNA1Nc3kDnKcetRGdAGA+dGPYqXUapRJueSE5GOVG6GhbvW2xG3Mwjbui7InK1QpuSS8HsIEqkEe3/tO73y4rNID4jFpoYzZnbm5CfnknQwFIm5Gba1XQoPspR8f+oyC/u352ZEHDciYni/VT2sLMzZc1477bOof3viUjP4fP8ZQBsMXNHDGQBzmRluDrZULetKVm4eDxK0MQtTu7bgzxv3iU5Ox9XehjGdmqDSqDl06a6uX2c7a1zsbXTemUqeLmTl5hGdnEZaluHyxRj6Os3OyCHs5gO9PnIyc0lLStcrf5nXqdD439BYYoQRYxRMZsQoFArCwsKoWbPoJXBhYWEvZXUSwM4Vv2NpY8nkTaOwVVhz4/QdZnZcrDcH61nRHXuXgpUbCjcHpn87HidPRzJTswi9Fs7MDot1kfnKPCX129bm3UnaL3H8g0T+3n2e7Yt26dpo0bMxjm4OvDmgJW8OaKkrjwmLY4DvOINo+/Pnf1C42jNofm8cPRSEXAljVsfFuiRQbl4uevPGzmUc2Ri4Urffa9o79Jr2DldP3WRam3nPpR2gXNWyDF3SHzsnW2LD4ti+ZDe7PttvEE3/xv4ND1TpecTvCUGVlou8vB3lp9TXTSflJ+XAE+ki8lNyCZt/TrefdCScpCPhWFV1xHt6Q22d5ByiNl1HlZmPmZ0FVpUUeH/8hm6ZtUQmJeteMknHI1Bl5iOzt8C6iiPesxoVCjI2BEcCg3C0tWJspya42Ftz92E8Yzf+RtKj6SQPRzvUT9wk3Rxs+Xn6+7r9wW0bMrhtQy7ce8DwddpM2O4KO5YN6oTCxpLkjGwC70cxYPUOkjMLVmG916y2XkK8bZN6AfDJj0fYG3DLYPqMcZ0+Dy/zOhUa/xsaBa8WEo3GNObhnDlzWLduHZ988glt27bVxcTExsZy4sQJFi1axIQJE5g3b94Lt/2W9D0Dj1ZgCqz/cjf1EIxK2C8VTT0Eo+P2xT+mHoJA8EyOqX8xeh/t6801SDtHAuc/u9L/ECbLE7NgwQJmzJjBypUrqVu3LmXKlKFMmTLUrVuXlStXMmPGjBIZMAKBQCAQvGqYMmPv+vXr8fHxwdLSEn9/fwICAoqte/PmTXr06IGPjw8SiYQ1a9YUqjNv3jwkEoneVq2afk6enJwcxo0bh7OzM7a2tvTo0YPYWP1A63+3IZFI2LFjxwtpM+kS6xkzZjBjxgxCQ0P1llhXqFDBlMMSCAQCgeA/wc6dO5k6dSobN27E39+fNWvW0L59e+7evYubm1uh+llZWfj6+vLee+8xZcqUYtutUaMGx48XpBGRyfTNiSlTpnDgwAF++eUXHBwcGD9+PO+++y5nzpzRq7d161Y6dCh41c6LhpGY1IiJjo5mw4YNnD59mujoaKRSKb6+vnTr1o3Bgwfrvd1aIBAIBILXFhMF9q5evZoRI0YwZMgQADZu3MiBAwfYsmULH31UOIFgo0aNaNRI+8qdoo4/RiaT4eHhUeSx1NRUvvnmG7Zv306bNtpXTmzduhU/Pz/OnTtH48aNdXUVCkWx7TwPJptOunjxIn5+fhw8eJD8/Hzu3btHgwYNsLGxYdq0abRs2ZL09HRTDU8gEAgEAsNhgtcO5OXlcenSJd58801dmVQq5c033+Ts2bOlknPv3j3KlCmDr68v/fv3JyKi4LUoly5dIj8/X6/fatWq4eXlVajfcePG4eLiwhtvvMGWLVt40TBdkxkxkydPZsqUKVy8eJG///6bbdu2ERQUxI4dO7h//z5ZWVnMnj3bVMMTCAQCgeCVIzc3l7S0NL3t31nrH5OQkIBKpdItnHmMu7u7LoSjJPj7+7Nt2zYOHz7Mhg0bCA0NpUWLFjrHQ0xMDBYWFoWmhv7d74IFC/j55585duwYPXr0YOzYsXzxxRcvNBaTGTGXL19mwIABuv1+/fpx+fJlYmNjcXR0ZMWKFfz666+mGp5AIBAIBIbDQJ6YpUuX4uDgoLctXWqY9+09Lx07duS9996jdu3atG/fnoMHD5KSksLPP//8Qu188sknNGvWjHr16jFjxgymT5/OypUrn33iE5jMiHFzcyM6Olq3Hxsbi1Kp1CW/q1y5MklJSaYankAgEAgEhkNtmG3mzJmkpqbqbTNnziyySxcXF8zMzAqtCoqNjS1VHMq/USgUVKlSheBg7St9PDw8yMvLIyUl5YX69ff35+HDh8V6lorCZEZMt27dGD16NIcPH+bkyZP079+fVq1aYWVlBcDdu3cpW7Z0b1oWCAQCgeBVwFBLrOVyOfb29nrbv7PWP8bCwoIGDRpw4sQJXZlarebEiRM0adKkyHNKQkZGBiEhIXh6al/L0qBBA8zNzfX6vXv3LhEREU/t98qVKzg6OharpyhMtjpp0aJFREdH06VLF1QqFU2aNOGHH37QHZdIJC/dRSYQCAQCwX+JqVOnMmjQIBo2bMgbb7zBmjVryMzM1K1WGjhwIGXLltX93ubl5XHr1i3d58jISK5cuYKtra3uhczTpk2jS5cueHt7ExUVxdy5czEzM6Nv374AODg4MGzYMKZOnYqTkxP29vZMmDCBJk2a6FYm7du3j9jYWBo3boylpSXHjh1jyZIlTJs27YX0mcyIsbW1ZefOneTk5KBUKrG1tdU73q5dOxONTCAQCAQCA2OiJda9e/cmPj6eOXPmEBMTQ926dTl8+LAu2DciIgKptGBSJioqinr16un2V61axapVq2jVqhWnTp0C4OHDh/Tt25fExERcXV1p3rw5586dw9XVVXfeZ599hlQqpUePHuTm5tK+fXu+/PJL3XFzc3PWr1/PlClT0Gg0VKpUSbcc/EUw2WsHjIl47cB/A/Hagdcf8doBwevAy3jtQMeqxedceREO3V1mkHb+K5gsJkYgEAgEAoGgNJg0Y69AIBAIBP8T/PcmPV4JhBEjEAgEAoGxEUaMURBGjOCVJTXX0tRDMCrWcWpTD0EgEAhea4QRIxAIBAKBsRGeGKMgjBiBQCAQCIyNWhgxxkCsThIIBAKBQPBa8sp4YlJTU3Vvt/Tw8MDBwcHEIxIIBAKBwEBoRAycMTC5J+brr7+mevXqODk5Ub16db3P33zzjamHJxAIBAJB6THQW6wF+pjUE7Ny5UrmzZvHxIkTad++vS4NcmxsLEePHmXSpEkkJye/8LsUBAKBQCB4pRAxMUbBpEbMunXr2Lp1K7169dIr9/Pzo3Xr1tSpU4cPP/xQGDECgUAgEAgKYVIjJi4ujlq1ahV7vFatWiQkJLzEEQkEAoFAYATEVJBRMGlMTKNGjVi2bBlKpbLQMZVKxfLly2nUqJEJRiYQCAQCgQERMTFGweTTSe3bt8fDw4OWLVvqxcT89ddfWFhYcPToUVMOUSAQCAQCwSuKSY2Y2rVrExQUxA8//MC5c+e4f/8+oF1ivWjRIvr164e9vb0phygQCAQCQekRXhSjYPI8MXZ2dowZM4YxY8aYdByD5vem4/C22CpsuHnmDp+P3UxkcEyx9TuPbkeX0e1w93EFIPzmQ35Y+AsXDl/R1Vn1xzzqtK6hd97+TUdZO2YzAL61vekzoxs1mlfDwcWe2LA49m86xm+fHzSotnfGtue9ae/g5KEg5Go46ydu4e6F4CLrelcvx6D5vancwBcPHze+nLKV39bqj+d5tHv6ujNy5UBqNq+GuVzGxcNXWDdxCylxqQbV9phu5ZrSx6s1ThZ2BGdE83nQb9xJe1BkXR8bd4b4tqeqXTk8rJxYF/Q7vz74W6/O4ArtGOzbTq8sIjOOgedW6PanVutBA8fKuMgdyFblciM1jK+CDxCRFW94gUCPt+rSv0tDnBxsCI6IZ/W2P7gVUvQ1WqGcMyN6NqWarzuerg6s+e4kOw9d1qszrEcThvdsqlcWHplEn2lbdftd29SiXTM/qvq4YWMt561h68jIyjW8OAx/nT5J7xndGL60P7vXHmDDlG268pd9nZpCo6O7gpErBlD/rdpY2Vny8G4U25fs5vTu84aWB/xvaCwRapEnxhiYPE8MQExMDL///jubNm1i06ZN7N27V5f47mXQe3pXuk3oyNoxXzGh8UxyMnNZeng25nLzYs9JeJjINzN/ZFzDGYxr9BFXTt5g/p4ZeFcvp1fvwObj9PIcods2T/9Bd6xyA19S4tNYPuALhtecwvYluxm6pB9dx3UwmLZWvZoy6tNB/LDgF8Y0mMH9a+EsPfwxCteiPVxyaznRoXF8M/NHEqOTS6Td0lrOsiOzQaPhw7bzmdz8E2QWMhbu/QiJRGIwbY/5P7c6jK38DttCjzHiwhpCMqJYWXcECnPbojVKLYjOTuKrkIMk5qYV225oRgzv/j1ft024tE7veFDazGJmjgAAIERJREFUQ5bf/plB51bw4ZXNSJCwst5IpBheY9vGVZk4oBXf7DrL4Fnfcy88ns8+6oGjvVWR9S0tZETFpfLlT3+TkJxRbLshDxJ4e/QG3TZq/g79duTmnLsaxre/BxhUz78xxnX6mCoNK/L2yLcIuRqmV/6yr1NTaASY8e14ylUtw5yuyxlZ+wNO/3ae2TunUrGujwFU6fO/oFHwamFSIyYzM5P333+fcuXK0bNnT+bMmcOcOXPo0aMH5cqVY8CAAWRlZRl9HN0nvc2Pi3dxdu9FQq9HsHzQOpzLONKsW/FBxef2XyLgUCCRwTFE3otm6+yfyM7Iwa9xFb16uVm5JMem6Las9GzdsSNbT/Ll5K1c++sWMaFxnPjxb45uO0mz7v4G09ZjSmcOfX2CI9tOEXH7IWtHf0VuVh7th7Ypsn7QxRA2T/+eUzv/IT83v0TaazSriruPGyuHrCfsRgRhNyJYMXg9VRr6UrdNTYNpe8x7Xq04EHmew9EXCM+MZfWdXeSo8ulUpuj/3930B2wM3s8fsVfIVxcOKn+MSqMiKS9dt6Xm61+L+6POcy3lPjE5ydxLj+Sb+4dxt3TEw8rJoPoA+r7dgL1/XOfAnzcJi0xixTfHyM3Lp3Prolf33b4fy7rtf3H87F3ylapi21Wp1CSlZum21CeuT4Cdhy7z/d4AbtyLMqief2OM6xTA0saSmT9M5LORG8lIztQ79rKvU1NoBKjetCq/rzvE3QvBxITGsX3xbjJTMqnSwNdg2h7zv6CxxIjAXqNgUiNm0qRJBAQEcODAAXJycoiNjSU2NpacnBwOHjxIQEAAkyZNMuoYPCq44ezpSODx67qyrLQs7pwPpnqTqs/VhlQqpXXvpljayLl1NkjvWJt+Lfg17hu+uvYpQ5f0Q25l8dS2rO2tSU8q/sn5RZCZy6jSwJfLx6/pyjQaDZePX6P6v4ytklKUdnO5OWg0ejel/Jw8NGoNNZtXM0i/j5FJzKhqV5ZLSQV/dw0aLiXfo7qDd6naLmvtyq/NP2F705l8XKMfbnJFsXUtpRZ09GxEVHYicTkpper338jMpFSt4M6FGxG6Mo0GLtyIoGZlz1K1Xd7Dkb1fjuLXNcOYN64T7s52pR3uC2PM63TCumGcP3iZwBPXCx17qdepiTQC3PrnLq16NcXO0RaJRELr3k0xtzTn6qlbper33/wvaCwVwogxCiaNidm1axcHDhygaVP9eXkzMzPatWvHli1b6Ny5M5s3bzbaGJw8FAAkx6bolSfHpuDornjquT41vfj8n8VYWJqTnZHD/HdXEnH7oe74Hz+dJi48noSoZHxrezF82fuUr1KG+T1XFdle9SZVaN27KbM7Ly2NJB0OLnaYycxIjtWf30+OS6V8tbKlavtp2m+fu0dOZi7Dl7/PllnbkUgkDFvWHzOZGU6ejqXq9984mNtgJjUjKU/f8EvOS8fL2q3E7d5Ki2DZrR08yIrH2cKOQRXa8XmDcQw5v4psVUFMSNeyTRld6W2sZHIiMuOYFvgVSk3xno+SoLC3QmYmJSlV/wk0KTUL7zIl9/rcDI5m0cbDhEcn4aKwYViPpmyY24f3p28jK6f4p2JDY6zrtHXvplSu78u4Nz4q8vhLvU5NpBFgYe/VzN4xhd2JW1HmK8nNymP+uyuJKiaeqqT8L2gUvHqY1IhRq9VYWBTvmbCwsED9jGCo3NxccnP1Aw3VGhVSiVmR9dv0a87kjaN0+6UxGB7ejWJ0vQ+xcbCmRc/GfLhtPB+0nqv7MT+4+biubtiNCJKiU1h5Yi6evu5E34/Va8unRnnm75nB9wt+4dKxa7zqPE17akIaC3t9ysQvR9BtQkc0ag0nfzpD0KX7aF6T1NsBiXd0n+8Tze20CHY0+5j/c6vDweiC+JDjMZe5mBSEs9ye3l6tmFtzABMurSPvKdNUrwrnnogtCIlI4GZwDL99MYK2jauy79QN0w3MALiWc2bsmiHMaLew2GmK1/06fR6NAIMX9sFGYcP0N+eTmpBO026NmL1zKlNaziHsCe/eq8h/SuNrcE29jpjUiOncuTMjR47km2++oV69enrHAgMDGTNmDF26dHlqG0uXLmX+/Pl6ZRXwoyI1iqx/du9F7pwviJQ3l2v/BI7uCpJiUnTlju6KIgPInkSZr9RZ+vcu36dqw4p0n9SJtaO/KrL+nfP3AChbyUPPiPHyK8eK43M4uPk42xfvfmqfL0JqQjoqpQpHd/03gju6OZD8hNaS8Cztl45dY1DlCdg726FSqshMzWJn1GZO7Yx9WrMvTGp+Jiq1CicL/SBeRws7kvKKD9p9UTKUOTzMSqCstbNeeaYqh8zsHCKzE7iVGs6+Vgtp7lqTP2KvGKzvlLRslCo1Tg42euVODtYkphSODygpGVm5REQnU+6Rd/JlYYzrtHIDXxzdFWy4VLCazExmRq2WfnQd14FOlv1Qq9Uv7zo1kUZ3H1e6je/I8JpTCL+lfbi6fy2cWs396DquvW6lpCH4X9BYGjTiLdZGweTJ7vr160eDBg1wdHTEzU3r/o+LiyMlJYX27duzbt26p7Yxc+ZMpk6dqlfW3WFwsfWzM3LIztB3MSZGJ1OvbU2d0WJtZ0U1/0rs23jkhfRIpFIsLIpf0fQ4Uv7JKHzv6uVYeWIuR7/7k62zf3qh/p6FMl9J0KX71Gtbi39+v6Ado0RCvba1+H39YYP2VZz2tMR0AOr+X00Ubvac3XvRoP0qNSrupkdS36kypxNuaseChAaOlfjt4RmD9WNlZkEZK2eO5qYXW0fyaLOQGvZrpVSpuRsaS8OaXvx1UWuASyTQsIYXvx69YrB+rOTmlHN34PDfhjOMngdjXKeBJ64zopb+fWHalrE8uBPFzhV7Cnl4jX6dmkij3FoOUMizpFapkUgNGxL5v6CxVAhPjFEwqRHj6OjIoUOHuH37NufOndMtq/bw8KBJkyZUq/bs4Dq5XI5cLtcrK24qqTh+W3uAfh/3IPJeDNGhcQxe0JvEqGTO7Lmgq7Pi2BzO7AnQfRmHLunHhUOBxEUkYGVnRZt+zanTujozOywGtPkn2vRrTsDBQNIS0/Gt7c3o1YO49uctQq9r3Zs+Ncqz4sRcLh25yq7V+3UxOGqVmtQEw3gRdn22n+nbxhF0MYS7AcF0n/w2ljZyjmw9CcD0beNJiEpiy6ztgDY47/FSaXMLGS5lnalYx4fsjByd5+VZ2gHaD25NxO1IUuLTqN6kCmPXDGH3mgM8DDL8KpdfIv5kZvU+3E17yO20CHp6tcDSzIJD0dr/38zqfUjITWVzyCGtRokZPjba7NAyqRkucgcq2ZYhW5VLZHYiAGMqdeafhFvE5iTjLLdnSIX2qDVqTsQGAuBp6cT/udflYtJdUvIycbV0oJ93G3LV+ZxLuFPEKEvHTwcu8cmYDty5H8PN4Bj6dKyPpdyc/X9qp33mjOlAfHIGG3ac1uoyk1KhnNZrJJOZ4epoS2VvV7Jz8nn4KP5rQv9WnL4cQnR8Gq6Otgx/rykqtYZj/xSM38nBGmeFDeU8tDEiFcu7kJWTR2xCOmmZOQbTZ+jrNDsjh7Cb+nmCcjJzSUtK1yt/mdepKTQ+uBNJ5L1oJm0cyVcffk9aYjrNujWi/lu1+aTLMqFR8Npj8mR3oH1rtZ+fn8n637nidyxtLJm8aRS2CmtunL7DzI6L9eZgPSu6Y+9SsHJD4ebA9G/H4+TpSGZqFqHXwpnZYbEuMl+Zp6R+29q8O0n7JY5/kMjfu8+zfdEuXRstejbG0c2BNwe05M0BLXXlMWFxDPAdZxBtf/78DwpXewbN742jh4KQK2HM6rhYl8zLzctF7wnGuYwjGwNX6vZ7TXuHXtPe4eqpm0xrM++5tAOUq1qWoUv6Y+dkS2xYHNuX7GbXZ/sNounfnIy7isLCliG+7XGS2xGcHsX0K1+T/CjY193SEc0TUf0ucnu+9i94uuvj3Zo+3q25khzC5MsbAHC1dOCTmv2xN7chNS+D66mhjL34Ban5Wi9FnlpJbUUFenq1wE5mRXJeBldT7jP+4jpS8g2zuuxJTpy7i6O9FcN7NsNZYc298HimLNtFcqp22be7iz3qJzU62vLdsoG6/f5dGtG/SyMu33rAuIU/azU62TJ/wts42FqSkpbN1buRjPhkOylPLLPu/mYdvYR4G+f1AWDhhsMc/OumwfQZ4zp9Hl7mdWoKjSqlio/fXsKwpf1ZuHcGlraWRAXHsHLwegIOBRpSHvC/obHEiJVFRkGi0Zj2L5uXl8eePXs4e/asniemadOmdO3a9amBv8XxlvQ9Qw9TYALyj5VuifSrTu7XpVse/Tpgu/OcqYcgEDyTY+pfjN5HB4ehBmnncOoWg7TzX8GkE4bBwcH4+fkxaNAgAgMDUavVqNVqAgMDGThwIDVq1CA4uOh01QKBQCAQCP63Mel00pgxY6hVqxaBgYGFXvSYlpbGwIEDGTduHEeOvFiArUAgEAgErxRiOskomNSIOXPmDAEBAUW+qdre3p6FCxfi72+4FPwCgUAgEJgCjXgBpFEw6XSSQqEgLCys2ONhYWEoFIqXNh6BQCAQCASvDyb1xAwfPpyBAwfyySef0LZtW9zdtcteY2NjOXHiBIsWLWLChAmmHKJAIBAIBKVHTCcZBZMaMQsWLMDGxoaVK/+/vXsPiqqM+wD+XQQWkFYUhAWLm3cCAiW3HTVNSGTIvJAaUpERTQZlYsbgGKCllpo5lkU5JjZoljNFXlIjFCtBQtS8UARErQkrBYGKCeg+7x++nNcVQW5x2H2/n5kzs/s8j+f8fpxz3N+c6xosWrQICoUCwI2XhqnVaiQmJuLVV1+VM0QiIqKu48Pu/hOyPycmMTERiYmJKC8vN7rF2svLS+bIiIiIqDeTvYhp5uXl1aJwOXfuHFJSUvDxx7wvnoiITBjfnfSf6EUvlmippqYGW7dulTsMIiKiLhEG0S0TGZO1iNm1a1eb06FDh+QMj4iIqHsIQ/dMnbBx40Z4enrCxsYGGo0GP/74Y6tjz549i4iICHh6ekKhUGD9+vUtxqSmpkKhUBhNt77r8OrVq4iLi4OjoyPs7e0RERGBCxeM3w6v0+kQHh4OOzs7ODs7Y/Hixbh27VqHcpP1dNL06dOhUCjQ1psPmi/2JSIioo757LPPkJCQgLS0NGg0Gqxfvx6hoaEoLi6Gs7Nzi/FXrlyBt7c3Zs2ahYULF7Y633vvvRfffvut9N3S0ricWLhwIfbu3YudO3eiX79+iI+Px8yZM3HkyBEAwPXr1xEeHg61Wo3c3FxUVlbiqaeegpWVFVauXNnu/GQ9EuPq6oovvvhCet3ArdPx48flDI+IiKhbyHU6ad26dYiNjcW8efPg4+ODtLQ02NnZtXqt6f333481a9bg8ccfh1KpbHW+lpaWUKvV0uTk5CT11dXVYfPmzVi3bh0mTZqE0aNHY8uWLcjNzcXRozfep/bNN9+gqKgIGRkZCAgIQFhYGF5//XVs3LgRjY2N7c5P1iJm9OjRKCwsbLX/TkdpiIiITIIMp5MaGxtRWFiIkJAQqc3CwgIhISHIy8vrUjolJSVwc3ODt7c3oqKioNPppL7CwkI0NTUZLXfEiBFwd3eXlpuXlwc/Pz/p+XAAEBoaiosXL+Ls2bPtjkPW00mLFy9GfX19q/1DhgzhdTFERET/q6GhAQ0NDUZtSqXytkdN/v77b1y/ft2oUAAAFxcX/PLLL52OQaPRID09HcOHD0dlZSWWLVuG8ePH48yZM7jrrrug1+thbW3d4on7Li4u0qNU9Hr9beNq7msvWYuY8ePHt9nft29fTJgwocPz7YnXqt+soaEBq1atQlJSUpuH30yVuecHyJRjcM8sppksOX7aM4sBuJ2aC3PNsbt+l1JTU7Fs2TKjtpSUFKSmpnbL/NsjLCxM+uzv7w+NRgMPDw98/vnniImJ6bE4gF5+i7WpaGhowLJly1pUx+bC3PMDmKM5MPf8AOZIQFJSEurq6oympKSk2451cnJCnz59WtwVdOHCBajV6m6LycHBAcOGDUNpaSmAGw+sbWxsRG1tbavLVavVt42rua+9WMQQERGZCKVSCZVKZTS1dsTK2toao0ePRnZ2ttRmMBiQnZ0NrVbbbTFdvnwZZWVlcHV1BXDjelcrKyuj5RYXF0On00nL1Wq1OH36NKqqqqQxWVlZUKlU8PHxafeye80Te4mIiKh7JSQkIDo6GkFBQRgzZgzWr1+P+vp6zJs3DwDw1FNPYdCgQVi1ahWAGxcDFxUVSZ/Pnz+PkydPwt7eHkOGDAEAvPLKK5g6dSo8PDxQUVGBlJQU9OnTB5GRkQCAfv36ISYmBgkJCRgwYABUKhVefPFFaLVaPPDAAwCAyZMnw8fHB08++SRWr14NvV6PpUuXIi4urkOnEVnEEBERmak5c+bgr7/+QnJyMvR6PQICArB//37pIlqdTgcLi/87KVNRUYHAwEDp+9q1a7F27VpMmDABOTk5AIA///wTkZGRqK6uxsCBAzFu3DgcPXoUAwcOlP7dO++8AwsLC0RERKChoQGhoaF4//33pf4+ffpgz549mD9/PrRaLfr27Yvo6GgsX768Q/mxiOkGSqUSKSkpZnUR2s3MPT+AOZoDc88PYI7UOfHx8YiPj79tX3Nh0szT0/OOjzbZsWPHHZdpY2ODjRs3YuPGja2O8fDwwNdff33HebVFIfggFiIiIjJBvLCXiIiITBKLGCIiIjJJLGKIiIjIJLGIISIiIpPEIqadVq1ahfvvvx933XUXnJ2dMX36dBQXFxuNuXr1KuLi4uDo6Ah7e3tERES0eCJhb5aamgqFQmE0jRgxQuo39fw8PT1b5KdQKBAXFwcAmDhxYou+559/Xuao2/bdd99h6tSpcHNzg0KhQGZmplG/EALJyclwdXWFra0tQkJCUFJSYjSmpqYGUVFRUKlUcHBwQExMDC5fvtyDWbSuu/Y7nU6H8PBw2NnZwdnZGYsXL8a1a9d6MpV2e/PNN6FQKPDyyy9LbeaQ4/nz5/HEE0/A0dERtra28PPzw7Fjx6R+U99WSR4sYtrp8OHDiIuLw9GjR5GVlYWmpiZMnjzZ6AWWCxcuxO7du7Fz504cPnwYFRUVmDlzpoxRd9y9996LyspKafrhhx+kPlPPr6CgwCi3rKwsAMCsWbOkMbGxsUZjVq9eLVe47VJfX4/77ruv1dsYV69ejQ0bNiAtLQ35+fno27cvQkNDcfXqVWlMVFQUzp49i6ysLOzZswffffcdnnvuuZ5KoU3dsd9dv34d4eHhaGxsRG5uLrZu3Yr09HQkJyfLkVKbCgoK8OGHH8Lf39+o3dRz/OeffzB27FhYWVlh3759KCoqwttvv43+/ftLY0x9WyWZCOqUqqoqAUAcPnxYCCFEbW2tsLKyEjt37pTG/PzzzwKAyMvLkyvMDklJSRH33XffbfvMIb9bLViwQAwePFgYDAYhhBATJkwQCxYskDeoLgAgvvzyS+m7wWAQarVarFmzRmqrra0VSqVSfPrpp0IIIYqKigQAUVBQII3Zt2+fUCgU4vz58z0We3t1Zr/7+uuvhYWFhdDr9dKYDz74QKhUKtHQ0NCzCbTh0qVLYujQoSIrK8toWzSHHBMTE8W4ceNa7TfHbZV6Bo/EdFJdXR0AYMCAAQCAwsJCNDU1ISQkRBozYsQIuLu7Iy8vT5YYO6OkpARubm7w9vZGVFQUdDodAPPJr1ljYyMyMjLwzDPPQKFQSO3btm2Dk5MTfH19kZSUhCtXrsgYZdeUl5dDr9cbrbN+/fpBo9FI6ywvLw8ODg4ICgqSxoSEhMDCwgL5+fk9HvOddGa/y8vLg5+fn/SEUgAIDQ3FxYsXcfbs2R6Mvm1xcXEIDw83ygUwjxx37dqFoKAgzJo1C87OzggMDMSmTZukfnPcVqln8Im9nWAwGPDyyy9j7Nix8PX1BQDo9XpYW1vDwcHBaKyLiwv0er0MUXacRqNBeno6hg8fjsrKSixbtgzjx4/HmTNnzCK/m2VmZqK2thZPP/201DZ37lx4eHjAzc0Np06dQmJiIoqLi/HFF1/IF2gXNK+Xm3/Ymr839+n1ejg7Oxv1W1paYsCAAb1uvXZ2v9Pr9bf9GzT39QY7duzA8ePHUVBQ0KLPHHL87bff8MEHHyAhIQFLlixBQUEBXnrpJVhbWyM6OtrstlXqOSxiOiEuLg5nzpwxul7EHISFhUmf/f39odFo4OHhgc8//xy2trYyRtb9Nm/ejLCwMLi5uUltN59b9/Pzg6urK4KDg1FWVobBgwfLESbdxFz3u3PnzmHBggXIysqCjY2N3OH8JwwGA4KCgrBy5UoAQGBgIM6cOYO0tDRER0fLHB2ZMp5O6qD4+Hjs2bMHhw4dwt133y21q9VqNDY2ora21mj8hQsXoFarezjK7uHg4IBhw4ahtLTUrPL7448/8O233+LZZ59tc5xGowEAlJaW9kRY3a55vdx6F8vN60ytVqOqqsqo/9q1a6ipqelV67Ur+51arb7t36C5T26FhYWoqqrCqFGjYGlpCUtLSxw+fBgbNmyApaUlXFxcTD5HV1dX+Pj4GLWNHDlSOl1tTtsq9SwWMe0khEB8fDy+/PJLHDx4EF5eXkb9o0ePhpWVFbKzs6W24uJi6HQ6aLXang63W1y+fBllZWVwdXU1q/y2bNkCZ2dnhIeHtznu5MmTAG78B2yKvLy8oFarjdbZxYsXkZ+fL60zrVaL2tpaFBYWSmMOHjwIg8EgFXFy6o79TqvV4vTp00Y/gFlZWVCpVC1+WOUQHByM06dP4+TJk9IUFBSEqKgo6bOp5zh27NgWt8b/+uuv8PDwAGAe2yrJRO4ri03F/PnzRb9+/UROTo6orKyUpitXrkhjnn/+eeHu7i4OHjwojh07JrRardBqtTJG3TGLFi0SOTk5ory8XBw5ckSEhIQIJycnUVVVJYQw/fyEEOL69evC3d1dJCYmGrWXlpaK5cuXi2PHjony8nLx1VdfCW9vb/Hggw/KFGn7XLp0SZw4cUKcOHFCABDr1q0TJ06cEH/88YcQQog333xTODg4iK+++kqcOnVKTJs2TXh5eYl///1XmseUKVNEYGCgyM/PFz/88IMYOnSoiIyMlCslI92x3127dk34+vqKyZMni5MnT4r9+/eLgQMHiqSkJDlSapdb75Qz9Rx//PFHYWlpKVasWCFKSkrEtm3bhJ2dncjIyJDGmPq2SvJgEdNOAG47bdmyRRrz77//ihdeeEH0799f2NnZiRkzZojKykr5gu6gOXPmCFdXV2FtbS0GDRok5syZI0pLS6V+U89PCCEOHDggAIji4mKjdp1OJx588EExYMAAoVQqxZAhQ8TixYtFXV2dTJG2z6FDh267XUZHRwshbty6+tprrwkXFxehVCpFcHBwi9yrq6tFZGSksLe3FyqVSsybN09cunRJhmxa6q797vfffxdhYWHC1tZWODk5iUWLFommpqYezqb9bi1izCHH3bt3C19fX6FUKsWIESPERx99ZNRv6tsqyUMhhBA9fPCHiIiIqMt4TQwRERGZJBYxREREZJJYxBAREZFJYhFDREREJolFDBEREZkkFjFERERkkljEEBERkUliEUNkwhQKBTIzM+UOg4hIFixiiHqxv/76C/Pnz4e7uzuUSiXUajVCQ0Nx5MgRAEBlZaXR28eJiP4/sZQ7ACJqXUREBBobG7F161Z4e3vjwoULyM7ORnV1NYDe8YZiIiK58EgMUS9VW1uL77//Hm+99RYeeugheHh4YMyYMUhKSsKjjz4KoOXppNzcXAQEBMDGxgZBQUHIzMyEQqGQ3sidk5MDhUKBAwcOIDAwELa2tpg0aRKqqqqwb98+jBw5EiqVCnPnzsWVK1ek+e7fvx/jxo2Dg4MDHB0d8cgjj6CsrKwn/xxERC2wiCHqpezt7WFvb4/MzEw0NDTccfzFixcxdepU+Pn54fjx43j99deRmJh427Gpqal47733kJubi3PnzmH27NlYv349tm/fjr179+Kbb77Bu+++K42vr69HQkICjh07huzsbFhYWGDGjBkwGAzdli8RUUfxdBJRL2VpaYn09HTExsYiLS0No0aNwoQJE/D444/D39+/xfjt27dDoVBg06ZNsLGxgY+PD86fP4/Y2NgWY9944w2MHTsWABATE4OkpCSUlZXB29sbAPDYY4/h0KFDUhEUERFh9O8//vhjDBw4EEVFRfD19e3u1ImI2oVHYoh6sYiICFRUVGDXrl2YMmUKcnJyMGrUKKSnp7cYW1xcDH9/f9jY2EhtY8aMue18by6CXFxcYGdnJxUwzW1VVVXS95KSEkRGRsLb2xsqlQqenp4AAJ1O18UMiYg6j0UMUS9nY2ODhx9+GK+99hpyc3Px9NNPIyUlpUvztLKykj4rFAqj781tN58qmjp1KmpqarBp0ybk5+cjPz8fANDY2NilOIiIuoJFDJGJ8fHxQX19fYv24cOH4/Tp00bXzxQUFHR5edXV1SguLsbSpUsRHByMkSNH4p9//unyfImIuopFDFEvVV1djUmTJiEjIwOnTp1CeXk5du7cidWrV2PatGktxs+dOxcGgwHPPfccfv75Zxw4cABr164FcOPISmf1798fjo6O+Oijj1BaWoqDBw8iISGh0/MjIuouvLCXqJeyt7eHRqPBO++8g7KyMjQ1NeGee+5BbGwslixZ0mK8SqXC7t27MX/+fAQEBMDPzw/JycmYO3eu0XUyHWVhYYEdO3bgpZdegq+vL4YPH44NGzZg4sSJXciOiKjrFEIIIXcQRPTf2LZtG+bNm4e6ujrY2trKHQ4RUbfikRgiM/LJJ5/A29sbgwYNwk8//YTExETMnj2bBQwRmSUWMURmRK/XIzk5GXq9Hq6urpg1axZWrFghd1hERP8Jnk4iIiIik8S7k4iIiMgksYghIiIik8QihoiIiEwSixgiIiIySSxiiIiIyCSxiCEiIiKTxCKGiIiITBKLGCIiIjJJLGKIiIjIJP0PDHLVK3wG0a8AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "# Assuming r2_values, sigma_values, and k_values are defined\n", "\n", "fig, ax = plt.subplots()\n", "# Create a heatmap with specified value range\n", "sns.heatmap(r2_values, annot=True, fmt=\".3f\", cmap='viridis', \n", " xticklabels=sigma_values, yticklabels=k_values, ax=ax, \n", " vmin=0.15, vmax=0.154)\n", "\n", "# Set axis labels\n", "ax.set_xlabel('Sigma')\n", "ax.set_ylabel('k')\n", "ax.set_title('Heatmap of R^2 for Different k and sigma')\n", "\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question**: Why do you think a value of k around 200 is particularly effective for this problem?\n", "\n", "**Question**: Why do you think changing sigma makes little difference when it is large?\n", "\n", "As you work with each ML algorithm, you'll start to get a sense for how to set the different hyperparameters, and how to tune them manually." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.7" } }, "nbformat": 4, "nbformat_minor": 2 }